[YUNIKORN-2116] Track user/group events (#122)

Closes: #122

Signed-off-by: Manikandan R <manirajv06@gmail.com>
diff --git a/lib/go/si/si.pb.go b/lib/go/si/si.pb.go
index b86a534..b0e34dd 100644
--- a/lib/go/si/si.pb.go
+++ b/lib/go/si/si.pb.go
@@ -340,50 +340,52 @@
 type EventRecord_ChangeDetail int32
 
 const (
-	EventRecord_DETAILS_NONE      EventRecord_ChangeDetail = 0
-	EventRecord_REQUEST_CANCEL    EventRecord_ChangeDetail = 100 // Request cancelled by the RM
-	EventRecord_REQUEST_ALLOC     EventRecord_ChangeDetail = 101 // Request allocated
-	EventRecord_REQUEST_TIMEOUT   EventRecord_ChangeDetail = 102 // Request cancelled due to timeout
-	EventRecord_APP_ALLOC         EventRecord_ChangeDetail = 200 // Allocation changed
-	EventRecord_APP_REQUEST       EventRecord_ChangeDetail = 201 // Request changed
-	EventRecord_APP_REJECT        EventRecord_ChangeDetail = 202 // Application rejected on create
-	EventRecord_APP_NEW           EventRecord_ChangeDetail = 203 // Application added with state new
-	EventRecord_APP_ACCEPTED      EventRecord_ChangeDetail = 204 // State change to accepted
-	EventRecord_APP_STARTING      EventRecord_ChangeDetail = 205 // State change to starting
-	EventRecord_APP_RUNNING       EventRecord_ChangeDetail = 206 // State change to running
-	EventRecord_APP_COMPLETING    EventRecord_ChangeDetail = 207 // State change to completing
-	EventRecord_APP_COMPLETED     EventRecord_ChangeDetail = 208 // State change to completed
-	EventRecord_APP_FAILING       EventRecord_ChangeDetail = 209 // State change to failing
-	EventRecord_APP_FAILED        EventRecord_ChangeDetail = 210 // State change to failed
-	EventRecord_APP_RESUMING      EventRecord_ChangeDetail = 211 // State change to resuming
-	EventRecord_APP_EXPIRED       EventRecord_ChangeDetail = 212 // State change to expired
-	EventRecord_APP_CANNOTRUN     EventRecord_ChangeDetail = 213 // Application cannot run (maxApplications hit)
-	EventRecord_APP_CANRUN        EventRecord_ChangeDetail = 214 // Application is allowed to run (after maxApplications limit hit)
-	EventRecord_NODE_DECOMISSION  EventRecord_ChangeDetail = 300 // Node removal
-	EventRecord_NODE_READY        EventRecord_ChangeDetail = 301 // Node ready state change
-	EventRecord_NODE_SCHEDULABLE  EventRecord_ChangeDetail = 302 // Node schedulable state change (cordon)
-	EventRecord_NODE_ALLOC        EventRecord_ChangeDetail = 303 // Allocation changed
-	EventRecord_NODE_CAPACITY     EventRecord_ChangeDetail = 304 // Capacity changed
-	EventRecord_NODE_OCCUPIED     EventRecord_ChangeDetail = 305 // Occupied resource changed
-	EventRecord_NODE_RESERVATION  EventRecord_ChangeDetail = 306 // Reservation/unreservation occurred
-	EventRecord_QUEUE_CONFIG      EventRecord_ChangeDetail = 400 // Managed queue update or removal
-	EventRecord_QUEUE_DYNAMIC     EventRecord_ChangeDetail = 401 // Dynamic queue update or removal
-	EventRecord_QUEUE_TYPE        EventRecord_ChangeDetail = 402 // Queue type change
-	EventRecord_QUEUE_MAX         EventRecord_ChangeDetail = 403 // Max resource changed
-	EventRecord_QUEUE_GUARANTEED  EventRecord_ChangeDetail = 404 // Guaranteed resource changed
-	EventRecord_QUEUE_APP         EventRecord_ChangeDetail = 405 // Application changed
-	EventRecord_QUEUE_ALLOC       EventRecord_ChangeDetail = 406 // Allocation changed
-	EventRecord_ALLOC_CANCEL      EventRecord_ChangeDetail = 500 // Allocation cancelled by the RM
-	EventRecord_ALLOC_PREEMPT     EventRecord_ChangeDetail = 501 // Allocation preempted by the core
-	EventRecord_ALLOC_TIMEOUT     EventRecord_ChangeDetail = 502 // Allocation cancelled due to timeout
-	EventRecord_ALLOC_REPLACED    EventRecord_ChangeDetail = 503 // Allocation replacement (placeholder)
-	EventRecord_ALLOC_NODEREMOVED EventRecord_ChangeDetail = 504 // Allocation cancelled, node removal
-	EventRecord_UG_USER_LIMITSET  EventRecord_ChangeDetail = 600 // Limit is configured for a given user
-	EventRecord_UG_GROUP_LIMITSET EventRecord_ChangeDetail = 601 // Limit is configured for a given group
-	EventRecord_UG_APP_LINK       EventRecord_ChangeDetail = 602 // Linkage is created between an application and a group
-	EventRecord_UG_APP_UNLINK     EventRecord_ChangeDetail = 603 // Unlinking an application and a group
-	EventRecord_UG_USER_RESOURCE  EventRecord_ChangeDetail = 604 // Resource usage updated for a user
-	EventRecord_UG_GROUP_RESOURCE EventRecord_ChangeDetail = 605 // Resource usage updated for a group
+	EventRecord_DETAILS_NONE        EventRecord_ChangeDetail = 0
+	EventRecord_REQUEST_CANCEL      EventRecord_ChangeDetail = 100 // Request cancelled by the RM
+	EventRecord_REQUEST_ALLOC       EventRecord_ChangeDetail = 101 // Request allocated
+	EventRecord_REQUEST_TIMEOUT     EventRecord_ChangeDetail = 102 // Request cancelled due to timeout
+	EventRecord_APP_ALLOC           EventRecord_ChangeDetail = 200 // Allocation changed
+	EventRecord_APP_REQUEST         EventRecord_ChangeDetail = 201 // Request changed
+	EventRecord_APP_REJECT          EventRecord_ChangeDetail = 202 // Application rejected on create
+	EventRecord_APP_NEW             EventRecord_ChangeDetail = 203 // Application added with state new
+	EventRecord_APP_ACCEPTED        EventRecord_ChangeDetail = 204 // State change to accepted
+	EventRecord_APP_STARTING        EventRecord_ChangeDetail = 205 // State change to starting
+	EventRecord_APP_RUNNING         EventRecord_ChangeDetail = 206 // State change to running
+	EventRecord_APP_COMPLETING      EventRecord_ChangeDetail = 207 // State change to completing
+	EventRecord_APP_COMPLETED       EventRecord_ChangeDetail = 208 // State change to completed
+	EventRecord_APP_FAILING         EventRecord_ChangeDetail = 209 // State change to failing
+	EventRecord_APP_FAILED          EventRecord_ChangeDetail = 210 // State change to failed
+	EventRecord_APP_RESUMING        EventRecord_ChangeDetail = 211 // State change to resuming
+	EventRecord_APP_EXPIRED         EventRecord_ChangeDetail = 212 // State change to expired
+	EventRecord_APP_CANNOTRUN_QUEUE EventRecord_ChangeDetail = 213 // Application cannot run in the queue (maxApplications hit)
+	EventRecord_APP_RUNNABLE_QUEUE  EventRecord_ChangeDetail = 214 // Application is allowed to run (after maxApplications limit hit)
+	EventRecord_APP_CANNOTRUN_QUOTA EventRecord_ChangeDetail = 215 // Application cannot run due to user/group quota (maxApplications hit)
+	EventRecord_APP_RUNNABLE_QUOTA  EventRecord_ChangeDetail = 216 // Application is allowed to run based on user/group quota (after maxApplications limit hit)
+	EventRecord_NODE_DECOMISSION    EventRecord_ChangeDetail = 300 // Node removal
+	EventRecord_NODE_READY          EventRecord_ChangeDetail = 301 // Node ready state change
+	EventRecord_NODE_SCHEDULABLE    EventRecord_ChangeDetail = 302 // Node schedulable state change (cordon)
+	EventRecord_NODE_ALLOC          EventRecord_ChangeDetail = 303 // Allocation changed
+	EventRecord_NODE_CAPACITY       EventRecord_ChangeDetail = 304 // Capacity changed
+	EventRecord_NODE_OCCUPIED       EventRecord_ChangeDetail = 305 // Occupied resource changed
+	EventRecord_NODE_RESERVATION    EventRecord_ChangeDetail = 306 // Reservation/unreservation occurred
+	EventRecord_QUEUE_CONFIG        EventRecord_ChangeDetail = 400 // Managed queue update or removal
+	EventRecord_QUEUE_DYNAMIC       EventRecord_ChangeDetail = 401 // Dynamic queue update or removal
+	EventRecord_QUEUE_TYPE          EventRecord_ChangeDetail = 402 // Queue type change
+	EventRecord_QUEUE_MAX           EventRecord_ChangeDetail = 403 // Max resource changed
+	EventRecord_QUEUE_GUARANTEED    EventRecord_ChangeDetail = 404 // Guaranteed resource changed
+	EventRecord_QUEUE_APP           EventRecord_ChangeDetail = 405 // Application changed
+	EventRecord_QUEUE_ALLOC         EventRecord_ChangeDetail = 406 // Allocation changed
+	EventRecord_ALLOC_CANCEL        EventRecord_ChangeDetail = 500 // Allocation cancelled by the RM
+	EventRecord_ALLOC_PREEMPT       EventRecord_ChangeDetail = 501 // Allocation preempted by the core
+	EventRecord_ALLOC_TIMEOUT       EventRecord_ChangeDetail = 502 // Allocation cancelled due to timeout
+	EventRecord_ALLOC_REPLACED      EventRecord_ChangeDetail = 503 // Allocation replacement (placeholder)
+	EventRecord_ALLOC_NODEREMOVED   EventRecord_ChangeDetail = 504 // Allocation cancelled, node removal
+	EventRecord_UG_USER_LIMITSET    EventRecord_ChangeDetail = 600 // Limit is configured for a given user
+	EventRecord_UG_GROUP_LIMITSET   EventRecord_ChangeDetail = 601 // Limit is configured for a given group
+	EventRecord_UG_APP_LINK         EventRecord_ChangeDetail = 602 // Linkage is created between an application and a group
+	EventRecord_UG_APP_UNLINK       EventRecord_ChangeDetail = 603 // Unlinking an application and a group
+	EventRecord_UG_USER_RESOURCE    EventRecord_ChangeDetail = 604 // Resource usage updated for a user
+	EventRecord_UG_GROUP_RESOURCE   EventRecord_ChangeDetail = 605 // Resource usage updated for a group
 )
 
 // Enum value maps for EventRecord_ChangeDetail.
@@ -406,8 +408,10 @@
 		210: "APP_FAILED",
 		211: "APP_RESUMING",
 		212: "APP_EXPIRED",
-		213: "APP_CANNOTRUN",
-		214: "APP_CANRUN",
+		213: "APP_CANNOTRUN_QUEUE",
+		214: "APP_RUNNABLE_QUEUE",
+		215: "APP_CANNOTRUN_QUOTA",
+		216: "APP_RUNNABLE_QUOTA",
 		300: "NODE_DECOMISSION",
 		301: "NODE_READY",
 		302: "NODE_SCHEDULABLE",
@@ -435,50 +439,52 @@
 		605: "UG_GROUP_RESOURCE",
 	}
 	EventRecord_ChangeDetail_value = map[string]int32{
-		"DETAILS_NONE":      0,
-		"REQUEST_CANCEL":    100,
-		"REQUEST_ALLOC":     101,
-		"REQUEST_TIMEOUT":   102,
-		"APP_ALLOC":         200,
-		"APP_REQUEST":       201,
-		"APP_REJECT":        202,
-		"APP_NEW":           203,
-		"APP_ACCEPTED":      204,
-		"APP_STARTING":      205,
-		"APP_RUNNING":       206,
-		"APP_COMPLETING":    207,
-		"APP_COMPLETED":     208,
-		"APP_FAILING":       209,
-		"APP_FAILED":        210,
-		"APP_RESUMING":      211,
-		"APP_EXPIRED":       212,
-		"APP_CANNOTRUN":     213,
-		"APP_CANRUN":        214,
-		"NODE_DECOMISSION":  300,
-		"NODE_READY":        301,
-		"NODE_SCHEDULABLE":  302,
-		"NODE_ALLOC":        303,
-		"NODE_CAPACITY":     304,
-		"NODE_OCCUPIED":     305,
-		"NODE_RESERVATION":  306,
-		"QUEUE_CONFIG":      400,
-		"QUEUE_DYNAMIC":     401,
-		"QUEUE_TYPE":        402,
-		"QUEUE_MAX":         403,
-		"QUEUE_GUARANTEED":  404,
-		"QUEUE_APP":         405,
-		"QUEUE_ALLOC":       406,
-		"ALLOC_CANCEL":      500,
-		"ALLOC_PREEMPT":     501,
-		"ALLOC_TIMEOUT":     502,
-		"ALLOC_REPLACED":    503,
-		"ALLOC_NODEREMOVED": 504,
-		"UG_USER_LIMITSET":  600,
-		"UG_GROUP_LIMITSET": 601,
-		"UG_APP_LINK":       602,
-		"UG_APP_UNLINK":     603,
-		"UG_USER_RESOURCE":  604,
-		"UG_GROUP_RESOURCE": 605,
+		"DETAILS_NONE":        0,
+		"REQUEST_CANCEL":      100,
+		"REQUEST_ALLOC":       101,
+		"REQUEST_TIMEOUT":     102,
+		"APP_ALLOC":           200,
+		"APP_REQUEST":         201,
+		"APP_REJECT":          202,
+		"APP_NEW":             203,
+		"APP_ACCEPTED":        204,
+		"APP_STARTING":        205,
+		"APP_RUNNING":         206,
+		"APP_COMPLETING":      207,
+		"APP_COMPLETED":       208,
+		"APP_FAILING":         209,
+		"APP_FAILED":          210,
+		"APP_RESUMING":        211,
+		"APP_EXPIRED":         212,
+		"APP_CANNOTRUN_QUEUE": 213,
+		"APP_RUNNABLE_QUEUE":  214,
+		"APP_CANNOTRUN_QUOTA": 215,
+		"APP_RUNNABLE_QUOTA":  216,
+		"NODE_DECOMISSION":    300,
+		"NODE_READY":          301,
+		"NODE_SCHEDULABLE":    302,
+		"NODE_ALLOC":          303,
+		"NODE_CAPACITY":       304,
+		"NODE_OCCUPIED":       305,
+		"NODE_RESERVATION":    306,
+		"QUEUE_CONFIG":        400,
+		"QUEUE_DYNAMIC":       401,
+		"QUEUE_TYPE":          402,
+		"QUEUE_MAX":           403,
+		"QUEUE_GUARANTEED":    404,
+		"QUEUE_APP":           405,
+		"QUEUE_ALLOC":         406,
+		"ALLOC_CANCEL":        500,
+		"ALLOC_PREEMPT":       501,
+		"ALLOC_TIMEOUT":       502,
+		"ALLOC_REPLACED":      503,
+		"ALLOC_NODEREMOVED":   504,
+		"UG_USER_LIMITSET":    600,
+		"UG_GROUP_LIMITSET":   601,
+		"UG_APP_LINK":         602,
+		"UG_APP_UNLINK":       603,
+		"UG_USER_RESOURCE":    604,
+		"UG_GROUP_RESOURCE":   605,
 	}
 )
 
@@ -3388,7 +3394,7 @@
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
 	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
 	0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69,
-	0x67, 0x73, 0x22, 0x9a, 0x0b, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f,
+	0x67, 0x73, 0x22, 0xdb, 0x0b, 0x0a, 0x0b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x63, 0x6f,
 	0x72, 0x64, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
 	0x32, 0x17, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65,
 	0x63, 0x6f, 0x72, 0x64, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
@@ -3421,7 +3427,7 @@
 	0x10, 0x05, 0x22, 0x34, 0x0a, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65,
 	0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x45,
 	0x54, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06,
-	0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x22, 0xe7, 0x06, 0x0a, 0x0c, 0x43, 0x68, 0x61,
+	0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x22, 0xa8, 0x07, 0x0a, 0x0c, 0x43, 0x68, 0x61,
 	0x6e, 0x67, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x54,
 	0x41, 0x49, 0x4c, 0x53, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x52,
 	0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x64, 0x12,
@@ -3442,78 +3448,82 @@
 	0x50, 0x50, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0xd2, 0x01, 0x12, 0x11, 0x0a, 0x0c,
 	0x41, 0x50, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0xd3, 0x01, 0x12,
 	0x10, 0x0a, 0x0b, 0x41, 0x50, 0x50, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10, 0xd4,
-	0x01, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52,
-	0x55, 0x4e, 0x10, 0xd5, 0x01, 0x12, 0x0f, 0x0a, 0x0a, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e,
-	0x52, 0x55, 0x4e, 0x10, 0xd6, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x44,
-	0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x02, 0x12, 0x0f, 0x0a,
-	0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0xad, 0x02, 0x12, 0x15,
-	0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41, 0x42,
-	0x4c, 0x45, 0x10, 0xae, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c,
-	0x4c, 0x4f, 0x43, 0x10, 0xaf, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x43,
-	0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0xb0, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f,
-	0x44, 0x45, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x49, 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12, 0x15,
-	0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54, 0x49,
-	0x4f, 0x4e, 0x10, 0xb2, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x43,
-	0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x90, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x51, 0x55, 0x45, 0x55,
-	0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x91, 0x03, 0x12, 0x0f, 0x0a, 0x0a,
-	0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x92, 0x03, 0x12, 0x0e, 0x0a,
-	0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x93, 0x03, 0x12, 0x15, 0x0a,
-	0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x47, 0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x45, 0x45,
-	0x44, 0x10, 0x94, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x50,
-	0x50, 0x10, 0x95, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x4c,
-	0x4c, 0x4f, 0x43, 0x10, 0x96, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f,
-	0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0xf4, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c, 0x4c,
-	0x4f, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x10, 0xf5, 0x03, 0x12, 0x12, 0x0a,
-	0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0xf6,
-	0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41,
-	0x43, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f,
-	0x4e, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0xf8, 0x03, 0x12, 0x15,
-	0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x53,
-	0x45, 0x54, 0x10, 0xd8, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55,
-	0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x53, 0x45, 0x54, 0x10, 0xd9, 0x04, 0x12, 0x10, 0x0a,
-	0x0b, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0xda, 0x04, 0x12,
-	0x12, 0x0a, 0x0d, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x55, 0x4e, 0x4c, 0x49, 0x4e, 0x4b,
-	0x10, 0xdb, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52,
-	0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdc, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47,
-	0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10,
-	0xdd, 0x04, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x07,
-	0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2a,
-	0x85, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
-	0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x54,
-	0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10,
-	0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f,
-	0x52, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10,
-	0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44, 0x5f, 0x42,
-	0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a,
-	0x14, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x50,
-	0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0x04, 0x32, 0xd5, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x68, 0x65,
-	0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
-	0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
-	0x12, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
-	0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e,
-	0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
-	0x00, 0x12, 0x4d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c,
-	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
-	0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01,
-	0x12, 0x50, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70,
-	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01,
-	0x30, 0x01, 0x12, 0x3b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65,
-	0x12, 0x12, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64,
-	0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x3a,
-	0x3b, 0x0a, 0x09, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x08, 0x73, 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x5a, 0x09,
-	0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
+	0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x52,
+	0x55, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0xd5, 0x01, 0x12, 0x17, 0x0a, 0x12, 0x41,
+	0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55,
+	0x45, 0x10, 0xd6, 0x01, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x50, 0x50, 0x5f, 0x43, 0x41, 0x4e, 0x4e,
+	0x4f, 0x54, 0x52, 0x55, 0x4e, 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x41, 0x10, 0xd7, 0x01, 0x12, 0x17,
+	0x0a, 0x12, 0x41, 0x50, 0x50, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x51,
+	0x55, 0x4f, 0x54, 0x41, 0x10, 0xd8, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f,
+	0x44, 0x45, 0x43, 0x4f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x02, 0x12, 0x0f,
+	0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0xad, 0x02, 0x12,
+	0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x41,
+	0x42, 0x4c, 0x45, 0x10, 0xae, 0x02, 0x12, 0x0f, 0x0a, 0x0a, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x41,
+	0x4c, 0x4c, 0x4f, 0x43, 0x10, 0xaf, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e, 0x4f, 0x44, 0x45, 0x5f,
+	0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x10, 0xb0, 0x02, 0x12, 0x12, 0x0a, 0x0d, 0x4e,
+	0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x49, 0x45, 0x44, 0x10, 0xb1, 0x02, 0x12,
+	0x15, 0x0a, 0x10, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x41, 0x54,
+	0x49, 0x4f, 0x4e, 0x10, 0xb2, 0x02, 0x12, 0x11, 0x0a, 0x0c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f,
+	0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x90, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x51, 0x55, 0x45,
+	0x55, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x91, 0x03, 0x12, 0x0f, 0x0a,
+	0x0a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x92, 0x03, 0x12, 0x0e,
+	0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x93, 0x03, 0x12, 0x15,
+	0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x47, 0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x45,
+	0x45, 0x44, 0x10, 0x94, 0x03, 0x12, 0x0e, 0x0a, 0x09, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41,
+	0x50, 0x50, 0x10, 0x95, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41,
+	0x4c, 0x4c, 0x4f, 0x43, 0x10, 0x96, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x41, 0x4c, 0x4c, 0x4f, 0x43,
+	0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0xf4, 0x03, 0x12, 0x12, 0x0a, 0x0d, 0x41, 0x4c,
+	0x4c, 0x4f, 0x43, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x10, 0xf5, 0x03, 0x12, 0x12,
+	0x0a, 0x0d, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10,
+	0xf6, 0x03, 0x12, 0x13, 0x0a, 0x0e, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c,
+	0x41, 0x43, 0x45, 0x44, 0x10, 0xf7, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x41, 0x4c, 0x4c, 0x4f, 0x43,
+	0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0xf8, 0x03, 0x12,
+	0x15, 0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54,
+	0x53, 0x45, 0x54, 0x10, 0xd8, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55, 0x47, 0x5f, 0x47, 0x52, 0x4f,
+	0x55, 0x50, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x53, 0x45, 0x54, 0x10, 0xd9, 0x04, 0x12, 0x10,
+	0x0a, 0x0b, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0xda, 0x04,
+	0x12, 0x12, 0x0a, 0x0d, 0x55, 0x47, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x55, 0x4e, 0x4c, 0x49, 0x4e,
+	0x4b, 0x10, 0xdb, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x55, 0x47, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f,
+	0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0xdc, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x55,
+	0x47, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45,
+	0x10, 0xdd, 0x04, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52,
+	0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+	0x2a, 0x85, 0x01, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+	0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
+	0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45,
+	0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59,
+	0x5f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54,
+	0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44, 0x5f,
+	0x42, 0x59, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x03, 0x12, 0x18,
+	0x0a, 0x14, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x48, 0x4f, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x52, 0x45,
+	0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x10, 0x04, 0x32, 0xd5, 0x02, 0x0a, 0x09, 0x53, 0x63, 0x68,
+	0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x12, 0x6a, 0x0a, 0x17, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+	0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+	0x72, 0x12, 0x25, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
+	0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31,
+	0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+	0x22, 0x00, 0x12, 0x4d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x6f,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+	0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30,
+	0x01, 0x12, 0x50, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41,
+	0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63,
+	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28,
+	0x01, 0x30, 0x01, 0x12, 0x3b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64,
+	0x65, 0x12, 0x12, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x73, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x6f,
+	0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01,
+	0x3a, 0x3b, 0x0a, 0x09, 0x73, 0x69, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x2e,
+	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xa3, 0x08, 0x20,
+	0x01, 0x28, 0x08, 0x52, 0x08, 0x73, 0x69, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x5a,
+	0x09, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x33,
 }
 
 var (
diff --git a/scheduler-interface-spec.md b/scheduler-interface-spec.md
index 904694a..75f9797 100644
--- a/scheduler-interface-spec.md
+++ b/scheduler-interface-spec.md
@@ -891,21 +891,23 @@
      REQUEST_ALLOC      = 101;  // Request allocated
      REQUEST_TIMEOUT    = 102;  // Request cancelled due to timeout
 
-     APP_ALLOC          = 200;  // Allocation changed
-     APP_REQUEST        = 201;  // Request changed
-     APP_REJECT         = 202;  // Application rejected on create
-     APP_NEW            = 203;  // Application added with state new
-     APP_ACCEPTED       = 204;  // State change to accepted 
-     APP_STARTING       = 205;  // State change to starting
-     APP_RUNNING        = 206;  // State change to running
-     APP_COMPLETING     = 207;  // State change to completing
-     APP_COMPLETED      = 208;  // State change to completed
-     APP_FAILING        = 209;  // State change to failing
-     APP_FAILED         = 210;  // State change to failed
-     APP_RESUMING       = 211;  // State change to resuming
-     APP_EXPIRED        = 212;  // State change to expired
-     APP_CANNOTRUN      = 213;  // Application cannot run (maxApplications hit)
-     APP_CANRUN         = 214;  // Application is allowed to run (after maxApplications limit hit)
+     APP_ALLOC            = 200;  // Allocation changed
+     APP_REQUEST          = 201;  // Request changed
+     APP_REJECT           = 202;  // Application rejected on create
+     APP_NEW              = 203;  // Application added with state new
+     APP_ACCEPTED         = 204;  // State change to accepted
+     APP_STARTING         = 205;  // State change to starting
+     APP_RUNNING          = 206;  // State change to running
+     APP_COMPLETING       = 207;  // State change to completing
+     APP_COMPLETED        = 208;  // State change to completed
+     APP_FAILING          = 209;  // State change to failing
+     APP_FAILED           = 210;  // State change to failed
+     APP_RESUMING         = 211;  // State change to resuming
+     APP_EXPIRED          = 212;  // State change to expired
+     APP_CANNOTRUN_QUEUE  = 213;  // Application cannot run in the queue (maxApplications hit)
+     APP_RUNNABLE_QUEUE   = 214;  // Application is allowed to run (after maxApplications limit hit)
+     APP_CANNOTRUN_QUOTA  = 215;  // Application cannot run due to user/group quota (maxApplications hit)
+     APP_RUNNABLE_QUOTA   = 216;  // Application is allowed to run based on user/group quota (after maxApplications limit hit)
 
      NODE_DECOMISSION   = 300;  // Node removal
      NODE_READY         = 301;  // Node ready state change
diff --git a/si.proto b/si.proto
index 596a86a..306cca8 100644
--- a/si.proto
+++ b/si.proto
@@ -514,21 +514,23 @@
      REQUEST_ALLOC      = 101;  // Request allocated
      REQUEST_TIMEOUT    = 102;  // Request cancelled due to timeout
 
-     APP_ALLOC          = 200;  // Allocation changed
-     APP_REQUEST        = 201;  // Request changed
-     APP_REJECT         = 202;  // Application rejected on create
-     APP_NEW            = 203;  // Application added with state new
-     APP_ACCEPTED       = 204;  // State change to accepted 
-     APP_STARTING       = 205;  // State change to starting
-     APP_RUNNING        = 206;  // State change to running
-     APP_COMPLETING     = 207;  // State change to completing
-     APP_COMPLETED      = 208;  // State change to completed
-     APP_FAILING        = 209;  // State change to failing
-     APP_FAILED         = 210;  // State change to failed
-     APP_RESUMING       = 211;  // State change to resuming
-     APP_EXPIRED        = 212;  // State change to expired
-     APP_CANNOTRUN      = 213;  // Application cannot run (maxApplications hit)
-     APP_CANRUN         = 214;  // Application is allowed to run (after maxApplications limit hit)
+     APP_ALLOC            = 200;  // Allocation changed
+     APP_REQUEST          = 201;  // Request changed
+     APP_REJECT           = 202;  // Application rejected on create
+     APP_NEW              = 203;  // Application added with state new
+     APP_ACCEPTED         = 204;  // State change to accepted
+     APP_STARTING         = 205;  // State change to starting
+     APP_RUNNING          = 206;  // State change to running
+     APP_COMPLETING       = 207;  // State change to completing
+     APP_COMPLETED        = 208;  // State change to completed
+     APP_FAILING          = 209;  // State change to failing
+     APP_FAILED           = 210;  // State change to failed
+     APP_RESUMING         = 211;  // State change to resuming
+     APP_EXPIRED          = 212;  // State change to expired
+     APP_CANNOTRUN_QUEUE  = 213;  // Application cannot run in the queue (maxApplications hit)
+     APP_RUNNABLE_QUEUE   = 214;  // Application is allowed to run (after maxApplications limit hit)
+     APP_CANNOTRUN_QUOTA  = 215;  // Application cannot run due to user/group quota (maxApplications hit)
+     APP_RUNNABLE_QUOTA   = 216;  // Application is allowed to run based on user/group quota (after maxApplications limit hit)
 
      NODE_DECOMISSION   = 300;  // Node removal
      NODE_READY         = 301;  // Node ready state change