@cobotar/protocol 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,260 @@
1
+ // @generated by protoc-gen-es v2.10.2 with parameter "target=ts,import_extension=ts"
2
+ // @generated from file ar/v1/semantic_source.proto (package ar.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
7
+ import { file_buf_validate_validate } from "../../buf/validate/validate_pb.ts";
8
+ import type { Message } from "@bufbuild/protobuf";
9
+
10
+ /**
11
+ * Describes the file ar/v1/semantic_source.proto.
12
+ */
13
+ export const file_ar_v1_semantic_source: GenFile = /*@__PURE__*/
14
+ fileDesc("Chthci92MS9zZW1hbnRpY19zb3VyY2UucHJvdG8SBWFyLnYxIqABChlTZW1hbnRpY1NvdXJjZVJlcXVpcmVtZW50EjYKBnNvdXJjZRgBIAEoDjIZLmFyLnYxLlNlbWFudGljU291cmNlVHlwZUILukgIyAEBggECEAESOQoKdmFsdWVfdHlwZRgCIAEoDjIYLmFyLnYxLlNlbWFudGljVmFsdWVUeXBlQgu6SAjIAQGCAQIQARIQCghvcHRpb25hbBgDIAEoCCrZBQoSQXNzaXN0YW5jZVNlbWFudGljEiMKH0FTU0lTVEFOQ0VfU0VNQU5USUNfVU5TUEVDSUZJRUQQABIlCiFBU1NJU1RBTkNFX1NFTUFOVElDX0xPQ0FURV9FTlRJVFkQARIoCiRBU1NJU1RBTkNFX1NFTUFOVElDX0RJUkVDVF9BVFRFTlRJT04QAhIsCihBU1NJU1RBTkNFX1NFTUFOVElDX1NIT1dfVEFSR0VUX1BPU0lUSU9OEAoSLworQVNTSVNUQU5DRV9TRU1BTlRJQ19TSE9XX1RBUkdFVF9PUklFTlRBVElPThALEikKJUFTU0lTVEFOQ0VfU0VNQU5USUNfU1VQUE9SVF9BTElHTk1FTlQQDBIqCiZBU1NJU1RBTkNFX1NFTUFOVElDX0NPTU1VTklDQVRFX0FDVElPThAUEi4KKkFTU0lTVEFOQ0VfU0VNQU5USUNfQ09NTVVOSUNBVEVfQ09OU1RSQUlOVBAVEi0KKUFTU0lTVEFOQ0VfU0VNQU5USUNfQ09NTVVOSUNBVEVfRVhDRVBUSU9OEBYSKwonQVNTSVNUQU5DRV9TRU1BTlRJQ19DT01NVU5JQ0FURV9WQVJJQU5UEBcSLworQVNTSVNUQU5DRV9TRU1BTlRJQ19SRVFVRVNUX0FDS05PV0xFREdFTUVOVBAeEiQKIEFTU0lTVEFOQ0VfU0VNQU5USUNfVkVSSUZZX1NUQVRFEB8SLAooQVNTSVNUQU5DRV9TRU1BTlRJQ19FU1RBQkxJU0hfQ09NUExFVElPThAgEiYKIkFTU0lTVEFOQ0VfU0VNQU5USUNfUFJFU0VOVF9BQ1RJT04QKBI2CjJBU1NJU1RBTkNFX1NFTUFOVElDX0NPTU1VTklDQVRFX0FDVElPTl9DT05TRVFVRU5DRRApEiYKIkFTU0lTVEFOQ0VfU0VNQU5USUNfUFJPVEVDVF9BQ1RJT04QKirIAwoSU2VtYW50aWNTb3VyY2VUeXBlEiQKIFNFTUFOVElDX1NPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASHwobU0VNQU5USUNfU09VUkNFX1RZUEVfQUNUSU9OEAESIAocU0VNQU5USUNfU09VUkNFX1RZUEVfU1VCSkVDVBACEiYKIlNFTUFOVElDX1NPVVJDRV9UWVBFX1NVQkpFQ1RfTEFCRUwQAxIpCiVTRU1BTlRJQ19TT1VSQ0VfVFlQRV9TVUJKRUNUX0dFT01FVFJZEAQSJQohU0VNQU5USUNfU09VUkNFX1RZUEVfQ1VSUkVOVF9QT1NFEAoSJAogU0VNQU5USUNfU09VUkNFX1RZUEVfVEFSR0VUX1BPU0UQCxIjCh9TRU1BTlRJQ19TT1VSQ0VfVFlQRV9DT05TVFJBSU5UEBQSLQopU0VNQU5USUNfU09VUkNFX1RZUEVfQ09NUExFVElPTl9DUklURVJJT04QFRIoCiRTRU1BTlRJQ19TT1VSQ0VfVFlQRV9WQVJJQU5UX0NPTlRFWFQQFhIrCidTRU1BTlRJQ19TT1VSQ0VfVFlQRV9QUk9DRVNTX1RSQU5TSVRJT04QHiroAgoRU2VtYW50aWNWYWx1ZVR5cGUSIwofU0VNQU5USUNfVkFMVUVfVFlQRV9VTlNQRUNJRklFRBAAEh4KGlNFTUFOVElDX1ZBTFVFX1RZUEVfRU5USVRZEAESHAoYU0VNQU5USUNfVkFMVUVfVFlQRV9GQUNUEAISHgoaU0VNQU5USUNfVkFMVUVfVFlQRV9BQ1RJT04QAxImCiJTRU1BTlRJQ19WQUxVRV9UWVBFX1NQQVRJQUxfQU5DSE9SEAoSHAoYU0VNQU5USUNfVkFMVUVfVFlQRV9QT1NFEAsSIAocU0VNQU5USUNfVkFMVUVfVFlQRV9HRU9NRVRSWRAMEhwKGFNFTUFOVElDX1ZBTFVFX1RZUEVfUEFUSBANEh4KGlNFTUFOVElDX1ZBTFVFX1RZUEVfUkVHSU9OEA4SKgomU0VNQU5USUNfVkFMVUVfVFlQRV9QUk9DRVNTX1RSQU5TSVRJT04QFEKPAQoJY29tLmFyLnYxQhNTZW1hbnRpY1NvdXJjZVByb3RvUAFaL2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9hci92MTthcnYxogIDQVhYqgIOTWVzc2FnZXMuQVIuVjHKAgVBclxWMeICEUFyXFYxXEdQQk1ldGFkYXRh6gIGQXI6OlYxYgZwcm90bzM", [file_buf_validate_validate]);
15
+
16
+ /**
17
+ * @generated from message ar.v1.SemanticSourceRequirement
18
+ */
19
+ export type SemanticSourceRequirement = Message<"ar.v1.SemanticSourceRequirement"> & {
20
+ /**
21
+ * @generated from field: ar.v1.SemanticSourceType source = 1;
22
+ */
23
+ source: SemanticSourceType;
24
+
25
+ /**
26
+ * @generated from field: ar.v1.SemanticValueType value_type = 2;
27
+ */
28
+ valueType: SemanticValueType;
29
+
30
+ /**
31
+ * @generated from field: bool optional = 3;
32
+ */
33
+ optional: boolean;
34
+ };
35
+
36
+ /**
37
+ * Describes the message ar.v1.SemanticSourceRequirement.
38
+ * Use `create(SemanticSourceRequirementSchema)` to create a new message.
39
+ */
40
+ export const SemanticSourceRequirementSchema: GenMessage<SemanticSourceRequirement> = /*@__PURE__*/
41
+ messageDesc(file_ar_v1_semantic_source, 0);
42
+
43
+ /**
44
+ * @generated from enum ar.v1.AssistanceSemantic
45
+ */
46
+ export enum AssistanceSemantic {
47
+ /**
48
+ * @generated from enum value: ASSISTANCE_SEMANTIC_UNSPECIFIED = 0;
49
+ */
50
+ UNSPECIFIED = 0,
51
+
52
+ /**
53
+ * @generated from enum value: ASSISTANCE_SEMANTIC_LOCATE_ENTITY = 1;
54
+ */
55
+ LOCATE_ENTITY = 1,
56
+
57
+ /**
58
+ * @generated from enum value: ASSISTANCE_SEMANTIC_DIRECT_ATTENTION = 2;
59
+ */
60
+ DIRECT_ATTENTION = 2,
61
+
62
+ /**
63
+ * @generated from enum value: ASSISTANCE_SEMANTIC_SHOW_TARGET_POSITION = 10;
64
+ */
65
+ SHOW_TARGET_POSITION = 10,
66
+
67
+ /**
68
+ * @generated from enum value: ASSISTANCE_SEMANTIC_SHOW_TARGET_ORIENTATION = 11;
69
+ */
70
+ SHOW_TARGET_ORIENTATION = 11,
71
+
72
+ /**
73
+ * @generated from enum value: ASSISTANCE_SEMANTIC_SUPPORT_ALIGNMENT = 12;
74
+ */
75
+ SUPPORT_ALIGNMENT = 12,
76
+
77
+ /**
78
+ * @generated from enum value: ASSISTANCE_SEMANTIC_COMMUNICATE_ACTION = 20;
79
+ */
80
+ COMMUNICATE_ACTION = 20,
81
+
82
+ /**
83
+ * @generated from enum value: ASSISTANCE_SEMANTIC_COMMUNICATE_CONSTRAINT = 21;
84
+ */
85
+ COMMUNICATE_CONSTRAINT = 21,
86
+
87
+ /**
88
+ * @generated from enum value: ASSISTANCE_SEMANTIC_COMMUNICATE_EXCEPTION = 22;
89
+ */
90
+ COMMUNICATE_EXCEPTION = 22,
91
+
92
+ /**
93
+ * @generated from enum value: ASSISTANCE_SEMANTIC_COMMUNICATE_VARIANT = 23;
94
+ */
95
+ COMMUNICATE_VARIANT = 23,
96
+
97
+ /**
98
+ * @generated from enum value: ASSISTANCE_SEMANTIC_REQUEST_ACKNOWLEDGEMENT = 30;
99
+ */
100
+ REQUEST_ACKNOWLEDGEMENT = 30,
101
+
102
+ /**
103
+ * @generated from enum value: ASSISTANCE_SEMANTIC_VERIFY_STATE = 31;
104
+ */
105
+ VERIFY_STATE = 31,
106
+
107
+ /**
108
+ * @generated from enum value: ASSISTANCE_SEMANTIC_ESTABLISH_COMPLETION = 32;
109
+ */
110
+ ESTABLISH_COMPLETION = 32,
111
+
112
+ /**
113
+ * @generated from enum value: ASSISTANCE_SEMANTIC_PRESENT_ACTION = 40;
114
+ */
115
+ PRESENT_ACTION = 40,
116
+
117
+ /**
118
+ * @generated from enum value: ASSISTANCE_SEMANTIC_COMMUNICATE_ACTION_CONSEQUENCE = 41;
119
+ */
120
+ COMMUNICATE_ACTION_CONSEQUENCE = 41,
121
+
122
+ /**
123
+ * @generated from enum value: ASSISTANCE_SEMANTIC_PROTECT_ACTION = 42;
124
+ */
125
+ PROTECT_ACTION = 42,
126
+ }
127
+
128
+ /**
129
+ * Describes the enum ar.v1.AssistanceSemantic.
130
+ */
131
+ export const AssistanceSemanticSchema: GenEnum<AssistanceSemantic> = /*@__PURE__*/
132
+ enumDesc(file_ar_v1_semantic_source, 0);
133
+
134
+ /**
135
+ * @generated from enum ar.v1.SemanticSourceType
136
+ */
137
+ export enum SemanticSourceType {
138
+ /**
139
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_UNSPECIFIED = 0;
140
+ */
141
+ UNSPECIFIED = 0,
142
+
143
+ /**
144
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_ACTION = 1;
145
+ */
146
+ ACTION = 1,
147
+
148
+ /**
149
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_SUBJECT = 2;
150
+ */
151
+ SUBJECT = 2,
152
+
153
+ /**
154
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_SUBJECT_LABEL = 3;
155
+ */
156
+ SUBJECT_LABEL = 3,
157
+
158
+ /**
159
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_SUBJECT_GEOMETRY = 4;
160
+ */
161
+ SUBJECT_GEOMETRY = 4,
162
+
163
+ /**
164
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_CURRENT_POSE = 10;
165
+ */
166
+ CURRENT_POSE = 10,
167
+
168
+ /**
169
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_TARGET_POSE = 11;
170
+ */
171
+ TARGET_POSE = 11,
172
+
173
+ /**
174
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_CONSTRAINT = 20;
175
+ */
176
+ CONSTRAINT = 20,
177
+
178
+ /**
179
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_COMPLETION_CRITERION = 21;
180
+ */
181
+ COMPLETION_CRITERION = 21,
182
+
183
+ /**
184
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_VARIANT_CONTEXT = 22;
185
+ */
186
+ VARIANT_CONTEXT = 22,
187
+
188
+ /**
189
+ * @generated from enum value: SEMANTIC_SOURCE_TYPE_PROCESS_TRANSITION = 30;
190
+ */
191
+ PROCESS_TRANSITION = 30,
192
+ }
193
+
194
+ /**
195
+ * Describes the enum ar.v1.SemanticSourceType.
196
+ */
197
+ export const SemanticSourceTypeSchema: GenEnum<SemanticSourceType> = /*@__PURE__*/
198
+ enumDesc(file_ar_v1_semantic_source, 1);
199
+
200
+ /**
201
+ * @generated from enum ar.v1.SemanticValueType
202
+ */
203
+ export enum SemanticValueType {
204
+ /**
205
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_UNSPECIFIED = 0;
206
+ */
207
+ UNSPECIFIED = 0,
208
+
209
+ /**
210
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_ENTITY = 1;
211
+ */
212
+ ENTITY = 1,
213
+
214
+ /**
215
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_FACT = 2;
216
+ */
217
+ FACT = 2,
218
+
219
+ /**
220
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_ACTION = 3;
221
+ */
222
+ ACTION = 3,
223
+
224
+ /**
225
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_SPATIAL_ANCHOR = 10;
226
+ */
227
+ SPATIAL_ANCHOR = 10,
228
+
229
+ /**
230
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_POSE = 11;
231
+ */
232
+ POSE = 11,
233
+
234
+ /**
235
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_GEOMETRY = 12;
236
+ */
237
+ GEOMETRY = 12,
238
+
239
+ /**
240
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_PATH = 13;
241
+ */
242
+ PATH = 13,
243
+
244
+ /**
245
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_REGION = 14;
246
+ */
247
+ REGION = 14,
248
+
249
+ /**
250
+ * @generated from enum value: SEMANTIC_VALUE_TYPE_PROCESS_TRANSITION = 20;
251
+ */
252
+ PROCESS_TRANSITION = 20,
253
+ }
254
+
255
+ /**
256
+ * Describes the enum ar.v1.SemanticValueType.
257
+ */
258
+ export const SemanticValueTypeSchema: GenEnum<SemanticValueType> = /*@__PURE__*/
259
+ enumDesc(file_ar_v1_semantic_source, 2);
260
+
@@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf";
20
20
  * Describes the file common/v1/property.proto.
21
21
  */
22
22
  export const file_common_v1_property: GenFile = /*@__PURE__*/
23
- fileDesc("Chhjb21tb24vdjEvcHJvcGVydHkucHJvdG8SCWNvbW1vbi52MSLeCAoSUHJvcGVydHlEZWZpbml0aW9uEhUKAmlkGAEgASgJQgm6SAZyBJjxBAESDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEjIKBHR5cGUYBSABKA4yFy5jb21tb24udjEuUHJvcGVydHlUeXBlQgu6SAjIAQGCAQIQARIRCglwYXJlbnRfaWQYBiABKAkSHAoUYXV0aG9yaW5nX2NvbnRleHRfaWQYByABKAkSMQoFc2NvcGUYCCABKA4yGC5jb21tb24udjEuUHJvcGVydHlTY29wZUIIukgFggECEAESTAobbWluaW11bV9yZXF1aXJlZF9wZXJtaXNzaW9uGAkgASgOMh0uY29tbW9uLnYxLlByb3BlcnR5UGVybWlzc2lvbkIIukgFggECEAESQQoPYWxsb3dlZF9vcmlnaW5zGAogAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQg26SAqSAQciBYIBAhABEjEKBWdyb3VwGAsgASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXBCCLpIBYIBAhABEhAKCG9yZGVyaW5nGAwgASgFEhIKCmhpZGVfZ3JvdXAYDSABKAgSEAoIYWR2YW5jZWQYDiABKAgSHAoUYWxsb3dfdG9fYmVfbWlycm9yZWQYDyABKAgSQAoNc2VtYW50aWNfcm9sZRgQIAEoDjIfLmNvbW1vbi52MS5Qcm9wZXJ0eVNlbWFudGljUm9sZUIIukgFggECEAESLgoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXMSKgoLZW51bV9leHRyYXMYKiABKAsyFS5jb21tb24udjEuRW51bUV4dHJhcxIwCg52ZWN0b3IzX2V4dHJhcxgrIAEoCzIYLmNvbW1vbi52MS5WZWN0b3IzRXh0cmFzEiwKDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhcxIqCgtwb3NlX2V4dHJhcxgtIAEoCzIVLmNvbW1vbi52MS5Qb3NlRXh0cmFzEi4KDWFuY2hvcl9leHRyYXMYLiABKAsyFy5jb21tb24udjEuQW5jaG9yRXh0cmFzOvMBukjvARqUAQoZZW51bV9yZXF1aXJlc19lbnVtX2V4dHJhcxI3ZW51bV9leHRyYXMgbXVzdCBiZSBzZXQgd2hlbiB0eXBlIGlzIEVOVU0gb3IgRU5VTV9NVUxUSRo+ISh0aGlzLnR5cGUgPT0gMTEgfHwgdGhpcy50eXBlID09IDEyKSB8fCBoYXModGhpcy5lbnVtX2V4dHJhcykiVgoNbnVtYmVyX2V4dHJhcwoLZW51bV9leHRyYXMKDnZlY3RvcjNfZXh0cmFzCgxjb2xvcl9leHRyYXMKC3Bvc2VfZXh0cmFzCg1hbmNob3JfZXh0cmFzIskDChBQcm9wZXJ0eUluc3RhbmNlEhUKAmlkGAEgASgJQgm6SAZyBJjzBAESKQoWcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgCIAEoCUIJukgGcgSY8QQBEicKBXNjb3BlGAMgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGUSEAoIc2NvcGVfaWQYBCABKAkSMwoGb3JpZ2luGAUgASgOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQgi6SAWCAQIQARIwCh1taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgGIAEoCUIJukgGcgSY8QQBEi8KBXZhbHVlGAcgASgLMhguY29tbW9uLnYxLlByb3BlcnR5VmFsdWVCBrpIA8gBATqfAbpImwEamAEKIm1pcnJvcl9yZXF1aXJlc19taXJyb3JfcHJvcGVydHlfaWQSNG1pcnJvcl9wcm9wZXJ0eV9pZCBtdXN0IGJlIHNldCB3aGVuIG9yaWdpbiBpcyBNSVJST1IaPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJyK9DQoNUHJvcGVydHlWYWx1ZRIyCgR0eXBlGAEgASgOMhcuY29tbW9uLnYxLlByb3BlcnR5VHlwZUILukgIyAEBggECEAESFwoKYm9vbF92YWx1ZRgVIAEoCEgAiAEBEhYKCWludF92YWx1ZRgWIAEoEkgBiAEBEhgKC2Zsb2F0X3ZhbHVlGBcgASgCSAKIAQESGQoMZG91YmxlX3ZhbHVlGBggASgBSAOIAQESGQoMc3RyaW5nX3ZhbHVlGBkgASgJSASIAQESKwoNdmVjdG9yM192YWx1ZRgaIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLgoKcG9zZV92YWx1ZRgbIAEoCzIaLmdlb21ldHJ5LnYxLkxvY2FsaXplZFBvc2USKQoMYW5jaG9yX3ZhbHVlGBwgASgLMhMuZ2VvbWV0cnkudjEuQW5jaG9yEiUKC2NvbG9yX3ZhbHVlGB0gASgLMhAuY29tbW9uLnYxLkNvbG9yEhsKDnJvYm90X2lkX3ZhbHVlGB4gASgJSAWIAQESIAoKZW51bV92YWx1ZRgfIAEoCUIHukgEcgIQAUgGiAEBEigKEGVudW1fbXVsdGlfdmFsdWUYICADKAlCDrpIC5IBCAgBIgRyAhABEhcKCmljb25fdmFsdWUYISABKAlIB4gBARIbCg5hc3NldF9pZF92YWx1ZRgiIAEoCUgIiAEBEhwKD3dvcmtlcl9pZF92YWx1ZRgjIAEoCUgJiAEBOuMHukjfBxqGBgogcHJvcGVydHlfdHlwZV9tYXRjaGVzX3ZhbHVlX2tpbmQSJ3R5cGUgbXVzdCBtYXRjaCB0aGUga2luZCBvZiB2YWx1ZSBmaWVsZBq4BSgodGhpcy50eXBlID09IDEgJiYgaGFzKHRoaXMuYm9vbF92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMiAmJiBoYXModGhpcy5pbnRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDMgJiYgaGFzKHRoaXMuZmxvYXRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDQgJiYgaGFzKHRoaXMuZG91YmxlX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSA1ICYmIGhhcyh0aGlzLnN0cmluZ192YWx1ZSkpIHx8KHRoaXMudHlwZSA9PSA2ICYmIGhhcyh0aGlzLnZlY3RvcjNfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDcgJiYgaGFzKHRoaXMucG9zZV92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gOCAmJiBoYXModGhpcy5hbmNob3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDkgJiYgaGFzKHRoaXMuY29sb3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDEwICYmIGhhcyh0aGlzLnJvYm90X2lkX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSAxMSAmJiBoYXModGhpcy5lbnVtX3ZhbHVlKSkgfHwodGhpcy50eXBlID09IDEyICYmIHNpemUodGhpcy5lbnVtX211bHRpX3ZhbHVlKSA+IDApIHx8ICh0aGlzLnR5cGUgPT0gMTMgJiYgaGFzKHRoaXMuaWNvbl92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMTQgJiYgaGFzKHRoaXMuYXNzZXRfaWRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDE1ICYmIGhhcyh0aGlzLndvcmtlcl9pZF92YWx1ZSkpKSLTAQoKYm9vbF92YWx1ZQoJaW50X3ZhbHVlCgtmbG9hdF92YWx1ZQoMZG91YmxlX3ZhbHVlCgxzdHJpbmdfdmFsdWUKDXZlY3RvcjNfdmFsdWUKCnBvc2VfdmFsdWUKDGFuY2hvcl92YWx1ZQoLY29sb3JfdmFsdWUKDnJvYm90X2lkX3ZhbHVlCgplbnVtX3ZhbHVlChBlbnVtX211bHRpX3ZhbHVlCgppY29uX3ZhbHVlCg5hc3NldF9pZF92YWx1ZQoPd29ya2VyX2lkX3ZhbHVlEAFCDQoLX2Jvb2xfdmFsdWVCDAoKX2ludF92YWx1ZUIOCgxfZmxvYXRfdmFsdWVCDwoNX2RvdWJsZV92YWx1ZUIPCg1fc3RyaW5nX3ZhbHVlQhEKD19yb2JvdF9pZF92YWx1ZUINCgtfZW51bV92YWx1ZUINCgtfaWNvbl92YWx1ZUIRCg9fYXNzZXRfaWRfdmFsdWVCEgoQX3dvcmtlcl9pZF92YWx1ZSLnAwoWUHJvcGVydHlJbnN0YW5jZVVwZGF0ZRInChRwcm9wZXJ0eV9pbnN0YW5jZV9pZBgBIAEoCUIJukgGcgSY8wQBEjMKBm9yaWdpbhgCIAEoDjIZLmNvbW1vbi52MS5Qcm9wZXJ0eU9yaWdpbkIIukgFggECEAESMAodbWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQYAyABKAlCCbpIBnIEmPEEARIvCgV2YWx1ZRgEIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQE6iwK6SIcCGmoKG2ZpeGVkX29yaWdpbl9yZXF1aXJlc192YWx1ZRImdmFsdWUgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgRklYRUQaI3RoaXMub3JpZ2luICE9IDEgfHwgaGFzKHRoaXMudmFsdWUpGpgBCiJtaXJyb3JfcmVxdWlyZXNfbWlycm9yX3Byb3BlcnR5X2lkEjRtaXJyb3JfcHJvcGVydHlfaWQgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgTUlSUk9SGjx0aGlzLm9yaWdpbiAhPSAyIHx8IHRoaXMubWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgIT0gJyciQwoTUHJvcGVydHlEZWZpbml0aW9ucxIsCgVpdGVtcxgBIAMoCzIdLmNvbW1vbi52MS5Qcm9wZXJ0eURlZmluaXRpb24iPwoRUHJvcGVydHlJbnN0YW5jZXMSKgoFaXRlbXMYASADKAsyGy5jb21tb24udjEuUHJvcGVydHlJbnN0YW5jZSLGAwoMTnVtYmVyRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESFQoEdW5pdBgEIAEoCUIHukgEcgIYAxIaCglwcmVjaXNpb24YBSABKA1CB7pIBCoCKAA6ogK6SJ4CGpsCChhudW1iZXJfZXh0cmFzX2NvbnNpc3RlbnQSVElmIGFueSBvZiBtaW4vbWF4L3N0ZXAgaXMgc2V0LCBhbGwgbXVzdCBiZSBzZXQ7IGFuZCBtaW4gPCBtYXg7IGFuZCBzdGVwIDw9IChtYXgtbWluKRqoASghaGFzKHRoaXMubWluKSAmJiAhaGFzKHRoaXMubWF4KSAmJiAhaGFzKHRoaXMuc3RlcCkpIHx8IChoYXModGhpcy5taW4pICYmIGhhcyh0aGlzLm1heCkgJiYgaGFzKHRoaXMuc3RlcCkgJiYgdGhpcy5taW4gPCB0aGlzLm1heCAmJiB0aGlzLnN0ZXAgPD0gKHRoaXMubWF4IC0gdGhpcy5taW4pKUIGCgRfbWluQgYKBF9tYXhCBwoFX3N0ZXAiawoKRW51bU9wdGlvbhIWCgV2YWx1ZRgBIAEoCUIHukgEcgIQARIWCgVsYWJlbBgCIAEoCUIHukgEcgIQARIMCgRpY29uGAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCGRpc2FibGVkGAUgASgIIqUBCgpFbnVtRXh0cmFzEhMKC3BsYWNlaG9sZGVyGAEgASgJEg4KBmZpbHRlchgCIAEoCBIPCgdncm91cGVkGAMgASgIEhIKCnNob3dfaWNvbnMYBCABKAgSGwoTbWF4X3NlbGVjdGVkX2xhYmVscxgFIAEoDRIwCgdvcHRpb25zGAYgAygLMhUuY29tbW9uLnYxLkVudW1PcHRpb25CCLpIBZIBAggBIvkDCg1WZWN0b3IzRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESGAoHbGFiZWxfeBgEIAEoCUIHukgEcgIYBRIYCgdsYWJlbF95GAUgASgJQge6SARyAhgFEhgKB2xhYmVsX3oYBiABKAlCB7pIBHICGAUSFQoEdW5pdBgHIAEoCUIHukgEcgIYAzqiArpIngIamwIKGG51bWJlcl9leHRyYXNfY29uc2lzdGVudBJUSWYgYW55IG9mIG1pbi9tYXgvc3RlcCBpcyBzZXQsIGFsbCBtdXN0IGJlIHNldDsgYW5kIG1pbiA8IG1heDsgYW5kIHN0ZXAgPD0gKG1heC1taW4pGqgBKCFoYXModGhpcy5taW4pICYmICFoYXModGhpcy5tYXgpICYmICFoYXModGhpcy5zdGVwKSkgfHwgKGhhcyh0aGlzLm1pbikgJiYgaGFzKHRoaXMubWF4KSAmJiBoYXModGhpcy5zdGVwKSAmJiB0aGlzLm1pbiA8IHRoaXMubWF4ICYmIHRoaXMuc3RlcCA8PSAodGhpcy5tYXggLSB0aGlzLm1pbikpQgYKBF9taW5CBgoEX21heEIHCgVfc3RlcCJOCgtDb2xvckV4dHJhcxIcCgRzdGVwGAEgASgBQg66SAsSCSkAAAAAAAAAABIhCgdkZWZhdWx0GAIgASgLMhAuY29tbW9uLnYxLkNvbG9yIiQKDEFuY2hvckV4dHJhcxIUCgxvbmx5X21hcmtlcnMYASABKAgiPAoKUG9zZUV4dHJhcxIXCg9hbmNob3JfZWRpdGFibGUYASABKAgSFQoNcG9zZV9lZGl0YWJsZRgCIAEoCCKOCgoVQ3JlYXRlUHJvcGVydHlNZXNzYWdlEhEKCXBhcmVudF9pZBgBIAEoCRIcChRhdXRob3JpbmdfY29udGV4dF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSMgoEdHlwZRgGIAEoDjIXLmNvbW1vbi52MS5Qcm9wZXJ0eVR5cGVCC7pICMgBAYIBAhABEjQKBXNjb3BlGAcgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGVCC7pICMgBAYIBAhABEkIKG21pbmltdW1fcmVxdWlyZWRfcGVybWlzc2lvbhgIIAEoDjIdLmNvbW1vbi52MS5Qcm9wZXJ0eVBlcm1pc3Npb24SMgoPYWxsb3dlZF9vcmlnaW5zGAkgAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luEicKBWdyb3VwGAogASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXASEAoIb3JkZXJpbmcYCyABKAUSEgoKaGlkZV9ncm91cBgMIAEoCBIQCghhZHZhbmNlZBgNIAEoCBIcChRhbGxvd190b19iZV9taXJyb3JlZBgOIAEoCBJACg1zZW1hbnRpY19yb2xlGBAgASgOMh8uY29tbW9uLnYxLlByb3BlcnR5U2VtYW50aWNSb2xlQgi6SAWCAQIQARI2CgZvcmlnaW4YFCABKA4yGS5jb21tb24udjEuUHJvcGVydHlPcmlnaW5CC7pICMgBAYIBAhABEhAKCHNjb3BlX2lkGBUgASgJEjAKHW1pcnJvcl9wcm9wZXJ0eV9kZWZpbml0aW9uX2lkGBYgASgJQgm6SAZyBJjxBAESNwoNaW5pdGlhbF92YWx1ZRgXIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQESMAoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXNIABIsCgtlbnVtX2V4dHJhcxgqIAEoCzIVLmNvbW1vbi52MS5FbnVtRXh0cmFzSAASMgoOdmVjdG9yM19leHRyYXMYKyABKAsyGC5jb21tb24udjEuVmVjdG9yM0V4dHJhc0gAEi4KDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhc0gAEiwKC3Bvc2VfZXh0cmFzGC0gASgLMhUuY29tbW9uLnYxLlBvc2VFeHRyYXNIABIwCg1hbmNob3JfZXh0cmFzGC4gASgLMhcuY29tbW9uLnYxLkFuY2hvckV4dHJhc0gAOowCukiIAhpsCiBkZWZpbml0aW9uX2FuZF92YWx1ZV90eXBlc19tYXRjaBIidHlwZSBtdXN0IG1hdGNoIGluaXRpYWxfdmFsdWUudHlwZRokdGhpcy50eXBlID09IHRoaXMuaW5pdGlhbF92YWx1ZS50eXBlGpcBChptaXJyb3JfcmVxdWlyZXNfZGVmaW5pdGlvbhI7bWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgaXMgcmVxdWlyZWQgZm9yIE1JUlJPUiBvcmlnaW4aPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJ0IICgZleHRyYXMqqQMKDFByb3BlcnR5VHlwZRIdChlQUk9QRVJUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSUFJPUEVSVFlfVFlQRV9CT09MEAESFQoRUFJPUEVSVFlfVFlQRV9JTlQQAhIXChNQUk9QRVJUWV9UWVBFX0ZMT0FUEAMSGAoUUFJPUEVSVFlfVFlQRV9ET1VCTEUQBBIYChRQUk9QRVJUWV9UWVBFX1NUUklORxAFEhkKFVBST1BFUlRZX1RZUEVfVkVDVE9SMxAGEhYKElBST1BFUlRZX1RZUEVfUE9TRRAHEhgKFFBST1BFUlRZX1RZUEVfQU5DSE9SEAgSFwoTUFJPUEVSVFlfVFlQRV9DT0xPUhAJEhcKE1BST1BFUlRZX1RZUEVfUk9CT1QQChIWChJQUk9QRVJUWV9UWVBFX0VOVU0QCxIcChhQUk9QRVJUWV9UWVBFX0VOVU1fTVVMVEkQDBIWChJQUk9QRVJUWV9UWVBFX0lDT04QDRIXChNQUk9QRVJUWV9UWVBFX0FTU0VUEA4SGAoUUFJPUEVSVFlfVFlQRV9XT1JLRVIQDypoCg5Qcm9wZXJ0eU9yaWdpbhIfChtQUk9QRVJUWV9PUklHSU5fVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9PUklHSU5fRklYRUQQARIaChZQUk9QRVJUWV9PUklHSU5fTUlSUk9SEAIq3AIKDVByb3BlcnR5R3JvdXASHgoaUFJPUEVSVFlfR1JPVVBfVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9HUk9VUF9PVVRQVVQQARIfChtQUk9QRVJUWV9HUk9VUF9OT05fRURJVEFCTEUQAhIaChZQUk9QRVJUWV9HUk9VUF9TVFlMSU5HEAMSGwoXUFJPUEVSVFlfR1JPVVBfTE9DQVRJT04QBBIXChNQUk9QRVJUWV9HUk9VUF9JQ09OEAUSIAocUFJPUEVSVFlfR1JPVVBfQ09ORklHVVJBVElPThAGEhkKFVBST1BFUlRZX0dST1VQX0hJRERFThAHEh0KGVBST1BFUlRZX0dST1VQX0lOUFVUX1NMT1QQCBIcChhQUk9QRVJUWV9HUk9VUF9BTklNQVRJT04QCRIjCh9QUk9QRVJUWV9HUk9VUF9UQVJHRVRfSU5ESUNBVE9SEAoqtgEKElByb3BlcnR5UGVybWlzc2lvbhIjCh9QUk9QRVJUWV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASHQoZUFJPUEVSVFlfUEVSTUlTU0lPTl9CQVNJQxAKEiAKHFBST1BFUlRZX1BFUk1JU1NJT05fQ09TTUVUSUMQFBIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX0ZVTEwQHhIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX05PTkUQKCrpDwoUUHJvcGVydHlTZW1hbnRpY1JvbGUSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9VTlNQRUNJRklFRBAAEjEKLVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQkFDS0dST1VORF9DT0xPUhABEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfVEVYVF9DT0xPUhACEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQk9SREVSX0NPTE9SEAMSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9PUEFDSVRZEAQSLgoqUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9DT1JORVJfUkFESVVTEAUSLQopUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QUklNQVJZX1RFWFRfQ09MT1IQFBIvCitQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1NFQ09OREFSWV9URVhUX0NPTE9SEBUSJAogUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9URVhUX1NJWkUQFhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1RJVExFX1RFWFRfU0laRRAXEicKI1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQUNDRU5UX0NPTE9SECgSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TVUNDRVNTX0NPTE9SECkSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9XQVJOSU5HX0NPTE9SECoSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9DT0xPUhArEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfRElTQUJMRURfQ09MT1IQLBItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NVUlJFTlRfVEFTS19DT0xPUhA8Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfVVBDT01JTkdfVEFTS19DT0xPUhA9Ei8KK1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQ09NUExFVEVEX1RBU0tfQ09MT1IQPhItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0JMT0NLRURfVEFTS19DT0xPUhA/Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BUSU9OQUxfVEFTS19DT0xPUhBAEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BFUkFUT1JfQ09MT1IQUBImCiJQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX0NPTE9SEFESLAooUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TSEFSRURfVEFTS19DT0xPUhBSEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VQRVJWSVNPUl9DT0xPUhBTEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFSVF9DT0xPUhBkEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVE9PTF9DT0xPUhBlEiYKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQVNTRVRfQ09MT1IQZhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NPTlRBSU5FUl9DT0xPUhBnEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVEFSR0VUX0dIT1NUX0NPTE9SEHgSMQotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9UQVJHRVRfSElHSExJR0hUX0NPTE9SEHkSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQVRIX0NPTE9SEHoSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9aT05FX0NPTE9SEHsSJwojUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9BTkNIT1JfQ09MT1IQfBIsCidQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX1BBVEhfQ09MT1IQjAESMgotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9ST0JPVF9TSUxIT1VFVFRFX0NPTE9SEI0BEi4KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfSU5URU5UX0NPTE9SEI4BEjEKLFBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfT0NDVVBBTkNZX0NPTE9SEI8BEikKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VDQ0VTU19TT1VORBCgARIpCiRQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1dBUk5JTkdfU09VTkQQoQESJwoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9TT1VORBCiARItCihQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX05PVElGSUNBVElPTl9JQ09OEKMBEioKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUFVMU0VfRFVSQVRJT04QtAESKQokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9GQURFX0RVUkFUSU9OELUBEisKJlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQU5JTUFUSU9OX1NQRUVEELYBEi8KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfSElHSExJR0hUX1RISUNLTkVTUxC3ASpmCg1Qcm9wZXJ0eVNjb3BlEh4KGlBST1BFUlRZX1NDT1BFX1VOU1BFQ0lGSUVEEAASGQoVUFJPUEVSVFlfU0NPUEVfRU5USVRZEAESGgoWUFJPUEVSVFlfU0NPUEVfUlVOVElNRRACQqUBCg1jb20uY29tbW9uLnYxQg1Qcm9wZXJ0eVByb3RvUAFaN2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9jb21tb24vdjE7Y29tbW9udjGiAgNDWFiqAhJNZXNzYWdlcy5Db21tb24uVjHKAglDb21tb25cVjHiAhVDb21tb25cVjFcR1BCTWV0YWRhdGHqAgpDb21tb246OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_color, file_geometry_v1_anchor, file_geometry_v1_pose, file_geometry_v1_vector3, file_validation_v1_predefined_string_rules]);
23
+ fileDesc("Chhjb21tb24vdjEvcHJvcGVydHkucHJvdG8SCWNvbW1vbi52MSKXCQoSUHJvcGVydHlEZWZpbml0aW9uEhUKAmlkGAEgASgJQgm6SAZyBJjxBAESNwoDa2V5GBEgASgJQiq6SCdyJRABGEAyH15bYS16XVthLXowLTldKig/Ol9bYS16MC05XSspKiQSDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEjIKBHR5cGUYBSABKA4yFy5jb21tb24udjEuUHJvcGVydHlUeXBlQgu6SAjIAQGCAQIQARIRCglwYXJlbnRfaWQYBiABKAkSHAoUYXV0aG9yaW5nX2NvbnRleHRfaWQYByABKAkSMQoFc2NvcGUYCCABKA4yGC5jb21tb24udjEuUHJvcGVydHlTY29wZUIIukgFggECEAESTAobbWluaW11bV9yZXF1aXJlZF9wZXJtaXNzaW9uGAkgASgOMh0uY29tbW9uLnYxLlByb3BlcnR5UGVybWlzc2lvbkIIukgFggECEAESQQoPYWxsb3dlZF9vcmlnaW5zGAogAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQg26SAqSAQciBYIBAhABEjEKBWdyb3VwGAsgASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXBCCLpIBYIBAhABEhAKCG9yZGVyaW5nGAwgASgFEhIKCmhpZGVfZ3JvdXAYDSABKAgSEAoIYWR2YW5jZWQYDiABKAgSHAoUYWxsb3dfdG9fYmVfbWlycm9yZWQYDyABKAgSQAoNc2VtYW50aWNfcm9sZRgQIAEoDjIfLmNvbW1vbi52MS5Qcm9wZXJ0eVNlbWFudGljUm9sZUIIukgFggECEAESLgoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXMSKgoLZW51bV9leHRyYXMYKiABKAsyFS5jb21tb24udjEuRW51bUV4dHJhcxIwCg52ZWN0b3IzX2V4dHJhcxgrIAEoCzIYLmNvbW1vbi52MS5WZWN0b3IzRXh0cmFzEiwKDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhcxIqCgtwb3NlX2V4dHJhcxgtIAEoCzIVLmNvbW1vbi52MS5Qb3NlRXh0cmFzEi4KDWFuY2hvcl9leHRyYXMYLiABKAsyFy5jb21tb24udjEuQW5jaG9yRXh0cmFzOvMBukjvARqUAQoZZW51bV9yZXF1aXJlc19lbnVtX2V4dHJhcxI3ZW51bV9leHRyYXMgbXVzdCBiZSBzZXQgd2hlbiB0eXBlIGlzIEVOVU0gb3IgRU5VTV9NVUxUSRo+ISh0aGlzLnR5cGUgPT0gMTEgfHwgdGhpcy50eXBlID09IDEyKSB8fCBoYXModGhpcy5lbnVtX2V4dHJhcykiVgoNbnVtYmVyX2V4dHJhcwoLZW51bV9leHRyYXMKDnZlY3RvcjNfZXh0cmFzCgxjb2xvcl9leHRyYXMKC3Bvc2VfZXh0cmFzCg1hbmNob3JfZXh0cmFzIskDChBQcm9wZXJ0eUluc3RhbmNlEhUKAmlkGAEgASgJQgm6SAZyBJjzBAESKQoWcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgCIAEoCUIJukgGcgSY8QQBEicKBXNjb3BlGAMgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGUSEAoIc2NvcGVfaWQYBCABKAkSMwoGb3JpZ2luGAUgASgOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luQgi6SAWCAQIQARIwCh1taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZBgGIAEoCUIJukgGcgSY8QQBEi8KBXZhbHVlGAcgASgLMhguY29tbW9uLnYxLlByb3BlcnR5VmFsdWVCBrpIA8gBATqfAbpImwEamAEKIm1pcnJvcl9yZXF1aXJlc19taXJyb3JfcHJvcGVydHlfaWQSNG1pcnJvcl9wcm9wZXJ0eV9pZCBtdXN0IGJlIHNldCB3aGVuIG9yaWdpbiBpcyBNSVJST1IaPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJyK9DQoNUHJvcGVydHlWYWx1ZRIyCgR0eXBlGAEgASgOMhcuY29tbW9uLnYxLlByb3BlcnR5VHlwZUILukgIyAEBggECEAESFwoKYm9vbF92YWx1ZRgVIAEoCEgAiAEBEhYKCWludF92YWx1ZRgWIAEoEkgBiAEBEhgKC2Zsb2F0X3ZhbHVlGBcgASgCSAKIAQESGQoMZG91YmxlX3ZhbHVlGBggASgBSAOIAQESGQoMc3RyaW5nX3ZhbHVlGBkgASgJSASIAQESKwoNdmVjdG9yM192YWx1ZRgaIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLgoKcG9zZV92YWx1ZRgbIAEoCzIaLmdlb21ldHJ5LnYxLkxvY2FsaXplZFBvc2USKQoMYW5jaG9yX3ZhbHVlGBwgASgLMhMuZ2VvbWV0cnkudjEuQW5jaG9yEiUKC2NvbG9yX3ZhbHVlGB0gASgLMhAuY29tbW9uLnYxLkNvbG9yEhsKDnJvYm90X2lkX3ZhbHVlGB4gASgJSAWIAQESIAoKZW51bV92YWx1ZRgfIAEoCUIHukgEcgIQAUgGiAEBEigKEGVudW1fbXVsdGlfdmFsdWUYICADKAlCDrpIC5IBCAgBIgRyAhABEhcKCmljb25fdmFsdWUYISABKAlIB4gBARIbCg5hc3NldF9pZF92YWx1ZRgiIAEoCUgIiAEBEhwKD3dvcmtlcl9pZF92YWx1ZRgjIAEoCUgJiAEBOuMHukjfBxqGBgogcHJvcGVydHlfdHlwZV9tYXRjaGVzX3ZhbHVlX2tpbmQSJ3R5cGUgbXVzdCBtYXRjaCB0aGUga2luZCBvZiB2YWx1ZSBmaWVsZBq4BSgodGhpcy50eXBlID09IDEgJiYgaGFzKHRoaXMuYm9vbF92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMiAmJiBoYXModGhpcy5pbnRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDMgJiYgaGFzKHRoaXMuZmxvYXRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDQgJiYgaGFzKHRoaXMuZG91YmxlX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSA1ICYmIGhhcyh0aGlzLnN0cmluZ192YWx1ZSkpIHx8KHRoaXMudHlwZSA9PSA2ICYmIGhhcyh0aGlzLnZlY3RvcjNfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDcgJiYgaGFzKHRoaXMucG9zZV92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gOCAmJiBoYXModGhpcy5hbmNob3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDkgJiYgaGFzKHRoaXMuY29sb3JfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDEwICYmIGhhcyh0aGlzLnJvYm90X2lkX3ZhbHVlKSkgfHwgKHRoaXMudHlwZSA9PSAxMSAmJiBoYXModGhpcy5lbnVtX3ZhbHVlKSkgfHwodGhpcy50eXBlID09IDEyICYmIHNpemUodGhpcy5lbnVtX211bHRpX3ZhbHVlKSA+IDApIHx8ICh0aGlzLnR5cGUgPT0gMTMgJiYgaGFzKHRoaXMuaWNvbl92YWx1ZSkpIHx8ICh0aGlzLnR5cGUgPT0gMTQgJiYgaGFzKHRoaXMuYXNzZXRfaWRfdmFsdWUpKSB8fCAodGhpcy50eXBlID09IDE1ICYmIGhhcyh0aGlzLndvcmtlcl9pZF92YWx1ZSkpKSLTAQoKYm9vbF92YWx1ZQoJaW50X3ZhbHVlCgtmbG9hdF92YWx1ZQoMZG91YmxlX3ZhbHVlCgxzdHJpbmdfdmFsdWUKDXZlY3RvcjNfdmFsdWUKCnBvc2VfdmFsdWUKDGFuY2hvcl92YWx1ZQoLY29sb3JfdmFsdWUKDnJvYm90X2lkX3ZhbHVlCgplbnVtX3ZhbHVlChBlbnVtX211bHRpX3ZhbHVlCgppY29uX3ZhbHVlCg5hc3NldF9pZF92YWx1ZQoPd29ya2VyX2lkX3ZhbHVlEAFCDQoLX2Jvb2xfdmFsdWVCDAoKX2ludF92YWx1ZUIOCgxfZmxvYXRfdmFsdWVCDwoNX2RvdWJsZV92YWx1ZUIPCg1fc3RyaW5nX3ZhbHVlQhEKD19yb2JvdF9pZF92YWx1ZUINCgtfZW51bV92YWx1ZUINCgtfaWNvbl92YWx1ZUIRCg9fYXNzZXRfaWRfdmFsdWVCEgoQX3dvcmtlcl9pZF92YWx1ZSLnAwoWUHJvcGVydHlJbnN0YW5jZVVwZGF0ZRInChRwcm9wZXJ0eV9pbnN0YW5jZV9pZBgBIAEoCUIJukgGcgSY8wQBEjMKBm9yaWdpbhgCIAEoDjIZLmNvbW1vbi52MS5Qcm9wZXJ0eU9yaWdpbkIIukgFggECEAESMAodbWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQYAyABKAlCCbpIBnIEmPEEARIvCgV2YWx1ZRgEIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQE6iwK6SIcCGmoKG2ZpeGVkX29yaWdpbl9yZXF1aXJlc192YWx1ZRImdmFsdWUgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgRklYRUQaI3RoaXMub3JpZ2luICE9IDEgfHwgaGFzKHRoaXMudmFsdWUpGpgBCiJtaXJyb3JfcmVxdWlyZXNfbWlycm9yX3Byb3BlcnR5X2lkEjRtaXJyb3JfcHJvcGVydHlfaWQgbXVzdCBiZSBzZXQgd2hlbiBvcmlnaW4gaXMgTUlSUk9SGjx0aGlzLm9yaWdpbiAhPSAyIHx8IHRoaXMubWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgIT0gJyciQwoTUHJvcGVydHlEZWZpbml0aW9ucxIsCgVpdGVtcxgBIAMoCzIdLmNvbW1vbi52MS5Qcm9wZXJ0eURlZmluaXRpb24iPwoRUHJvcGVydHlJbnN0YW5jZXMSKgoFaXRlbXMYASADKAsyGy5jb21tb24udjEuUHJvcGVydHlJbnN0YW5jZSLGAwoMTnVtYmVyRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESFQoEdW5pdBgEIAEoCUIHukgEcgIYAxIaCglwcmVjaXNpb24YBSABKA1CB7pIBCoCKAA6ogK6SJ4CGpsCChhudW1iZXJfZXh0cmFzX2NvbnNpc3RlbnQSVElmIGFueSBvZiBtaW4vbWF4L3N0ZXAgaXMgc2V0LCBhbGwgbXVzdCBiZSBzZXQ7IGFuZCBtaW4gPCBtYXg7IGFuZCBzdGVwIDw9IChtYXgtbWluKRqoASghaGFzKHRoaXMubWluKSAmJiAhaGFzKHRoaXMubWF4KSAmJiAhaGFzKHRoaXMuc3RlcCkpIHx8IChoYXModGhpcy5taW4pICYmIGhhcyh0aGlzLm1heCkgJiYgaGFzKHRoaXMuc3RlcCkgJiYgdGhpcy5taW4gPCB0aGlzLm1heCAmJiB0aGlzLnN0ZXAgPD0gKHRoaXMubWF4IC0gdGhpcy5taW4pKUIGCgRfbWluQgYKBF9tYXhCBwoFX3N0ZXAiawoKRW51bU9wdGlvbhIWCgV2YWx1ZRgBIAEoCUIHukgEcgIQARIWCgVsYWJlbBgCIAEoCUIHukgEcgIQARIMCgRpY29uGAMgASgJEg0KBWdyb3VwGAQgASgJEhAKCGRpc2FibGVkGAUgASgIIqUBCgpFbnVtRXh0cmFzEhMKC3BsYWNlaG9sZGVyGAEgASgJEg4KBmZpbHRlchgCIAEoCBIPCgdncm91cGVkGAMgASgIEhIKCnNob3dfaWNvbnMYBCABKAgSGwoTbWF4X3NlbGVjdGVkX2xhYmVscxgFIAEoDRIwCgdvcHRpb25zGAYgAygLMhUuY29tbW9uLnYxLkVudW1PcHRpb25CCLpIBZIBAggBIvkDCg1WZWN0b3IzRXh0cmFzEhAKA21pbhgBIAEoAUgAiAEBEhAKA21heBgCIAEoAUgBiAEBEiEKBHN0ZXAYAyABKAFCDrpICxIJIQAAAAAAAAAASAKIAQESGAoHbGFiZWxfeBgEIAEoCUIHukgEcgIYBRIYCgdsYWJlbF95GAUgASgJQge6SARyAhgFEhgKB2xhYmVsX3oYBiABKAlCB7pIBHICGAUSFQoEdW5pdBgHIAEoCUIHukgEcgIYAzqiArpIngIamwIKGG51bWJlcl9leHRyYXNfY29uc2lzdGVudBJUSWYgYW55IG9mIG1pbi9tYXgvc3RlcCBpcyBzZXQsIGFsbCBtdXN0IGJlIHNldDsgYW5kIG1pbiA8IG1heDsgYW5kIHN0ZXAgPD0gKG1heC1taW4pGqgBKCFoYXModGhpcy5taW4pICYmICFoYXModGhpcy5tYXgpICYmICFoYXModGhpcy5zdGVwKSkgfHwgKGhhcyh0aGlzLm1pbikgJiYgaGFzKHRoaXMubWF4KSAmJiBoYXModGhpcy5zdGVwKSAmJiB0aGlzLm1pbiA8IHRoaXMubWF4ICYmIHRoaXMuc3RlcCA8PSAodGhpcy5tYXggLSB0aGlzLm1pbikpQgYKBF9taW5CBgoEX21heEIHCgVfc3RlcCJOCgtDb2xvckV4dHJhcxIcCgRzdGVwGAEgASgBQg66SAsSCSkAAAAAAAAAABIhCgdkZWZhdWx0GAIgASgLMhAuY29tbW9uLnYxLkNvbG9yIiQKDEFuY2hvckV4dHJhcxIUCgxvbmx5X21hcmtlcnMYASABKAgiPAoKUG9zZUV4dHJhcxIXCg9hbmNob3JfZWRpdGFibGUYASABKAgSFQoNcG9zZV9lZGl0YWJsZRgCIAEoCCLHCgoVQ3JlYXRlUHJvcGVydHlNZXNzYWdlEhEKCXBhcmVudF9pZBgBIAEoCRIcChRhdXRob3JpbmdfY29udGV4dF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBGljb24YBCABKAkSEwoLZGVzY3JpcHRpb24YBSABKAkSMgoEdHlwZRgGIAEoDjIXLmNvbW1vbi52MS5Qcm9wZXJ0eVR5cGVCC7pICMgBAYIBAhABEjQKBXNjb3BlGAcgASgOMhguY29tbW9uLnYxLlByb3BlcnR5U2NvcGVCC7pICMgBAYIBAhABEkIKG21pbmltdW1fcmVxdWlyZWRfcGVybWlzc2lvbhgIIAEoDjIdLmNvbW1vbi52MS5Qcm9wZXJ0eVBlcm1pc3Npb24SMgoPYWxsb3dlZF9vcmlnaW5zGAkgAygOMhkuY29tbW9uLnYxLlByb3BlcnR5T3JpZ2luEicKBWdyb3VwGAogASgOMhguY29tbW9uLnYxLlByb3BlcnR5R3JvdXASEAoIb3JkZXJpbmcYCyABKAUSEgoKaGlkZV9ncm91cBgMIAEoCBIQCghhZHZhbmNlZBgNIAEoCBIcChRhbGxvd190b19iZV9taXJyb3JlZBgOIAEoCBJACg1zZW1hbnRpY19yb2xlGBAgASgOMh8uY29tbW9uLnYxLlByb3BlcnR5U2VtYW50aWNSb2xlQgi6SAWCAQIQARI3CgNrZXkYESABKAlCKrpIJ3IlEAEYQDIfXlthLXpdW2EtejAtOV0qKD86X1thLXowLTldKykqJBI2CgZvcmlnaW4YFCABKA4yGS5jb21tb24udjEuUHJvcGVydHlPcmlnaW5CC7pICMgBAYIBAhABEhAKCHNjb3BlX2lkGBUgASgJEjAKHW1pcnJvcl9wcm9wZXJ0eV9kZWZpbml0aW9uX2lkGBYgASgJQgm6SAZyBJjxBAESNwoNaW5pdGlhbF92YWx1ZRgXIAEoCzIYLmNvbW1vbi52MS5Qcm9wZXJ0eVZhbHVlQga6SAPIAQESMAoNbnVtYmVyX2V4dHJhcxgpIAEoCzIXLmNvbW1vbi52MS5OdW1iZXJFeHRyYXNIABIsCgtlbnVtX2V4dHJhcxgqIAEoCzIVLmNvbW1vbi52MS5FbnVtRXh0cmFzSAASMgoOdmVjdG9yM19leHRyYXMYKyABKAsyGC5jb21tb24udjEuVmVjdG9yM0V4dHJhc0gAEi4KDGNvbG9yX2V4dHJhcxgsIAEoCzIWLmNvbW1vbi52MS5Db2xvckV4dHJhc0gAEiwKC3Bvc2VfZXh0cmFzGC0gASgLMhUuY29tbW9uLnYxLlBvc2VFeHRyYXNIABIwCg1hbmNob3JfZXh0cmFzGC4gASgLMhcuY29tbW9uLnYxLkFuY2hvckV4dHJhc0gAOowCukiIAhpsCiBkZWZpbml0aW9uX2FuZF92YWx1ZV90eXBlc19tYXRjaBIidHlwZSBtdXN0IG1hdGNoIGluaXRpYWxfdmFsdWUudHlwZRokdGhpcy50eXBlID09IHRoaXMuaW5pdGlhbF92YWx1ZS50eXBlGpcBChptaXJyb3JfcmVxdWlyZXNfZGVmaW5pdGlvbhI7bWlycm9yX3Byb3BlcnR5X2RlZmluaXRpb25faWQgaXMgcmVxdWlyZWQgZm9yIE1JUlJPUiBvcmlnaW4aPHRoaXMub3JpZ2luICE9IDIgfHwgdGhpcy5taXJyb3JfcHJvcGVydHlfZGVmaW5pdGlvbl9pZCAhPSAnJ0IICgZleHRyYXMqqQMKDFByb3BlcnR5VHlwZRIdChlQUk9QRVJUWV9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSUFJPUEVSVFlfVFlQRV9CT09MEAESFQoRUFJPUEVSVFlfVFlQRV9JTlQQAhIXChNQUk9QRVJUWV9UWVBFX0ZMT0FUEAMSGAoUUFJPUEVSVFlfVFlQRV9ET1VCTEUQBBIYChRQUk9QRVJUWV9UWVBFX1NUUklORxAFEhkKFVBST1BFUlRZX1RZUEVfVkVDVE9SMxAGEhYKElBST1BFUlRZX1RZUEVfUE9TRRAHEhgKFFBST1BFUlRZX1RZUEVfQU5DSE9SEAgSFwoTUFJPUEVSVFlfVFlQRV9DT0xPUhAJEhcKE1BST1BFUlRZX1RZUEVfUk9CT1QQChIWChJQUk9QRVJUWV9UWVBFX0VOVU0QCxIcChhQUk9QRVJUWV9UWVBFX0VOVU1fTVVMVEkQDBIWChJQUk9QRVJUWV9UWVBFX0lDT04QDRIXChNQUk9QRVJUWV9UWVBFX0FTU0VUEA4SGAoUUFJPUEVSVFlfVFlQRV9XT1JLRVIQDypoCg5Qcm9wZXJ0eU9yaWdpbhIfChtQUk9QRVJUWV9PUklHSU5fVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9PUklHSU5fRklYRUQQARIaChZQUk9QRVJUWV9PUklHSU5fTUlSUk9SEAIq3AIKDVByb3BlcnR5R3JvdXASHgoaUFJPUEVSVFlfR1JPVVBfVU5TUEVDSUZJRUQQABIZChVQUk9QRVJUWV9HUk9VUF9PVVRQVVQQARIfChtQUk9QRVJUWV9HUk9VUF9OT05fRURJVEFCTEUQAhIaChZQUk9QRVJUWV9HUk9VUF9TVFlMSU5HEAMSGwoXUFJPUEVSVFlfR1JPVVBfTE9DQVRJT04QBBIXChNQUk9QRVJUWV9HUk9VUF9JQ09OEAUSIAocUFJPUEVSVFlfR1JPVVBfQ09ORklHVVJBVElPThAGEhkKFVBST1BFUlRZX0dST1VQX0hJRERFThAHEh0KGVBST1BFUlRZX0dST1VQX0lOUFVUX1NMT1QQCBIcChhQUk9QRVJUWV9HUk9VUF9BTklNQVRJT04QCRIjCh9QUk9QRVJUWV9HUk9VUF9UQVJHRVRfSU5ESUNBVE9SEAoqtgEKElByb3BlcnR5UGVybWlzc2lvbhIjCh9QUk9QRVJUWV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASHQoZUFJPUEVSVFlfUEVSTUlTU0lPTl9CQVNJQxAKEiAKHFBST1BFUlRZX1BFUk1JU1NJT05fQ09TTUVUSUMQFBIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX0ZVTEwQHhIcChhQUk9QRVJUWV9QRVJNSVNTSU9OX05PTkUQKCrpDwoUUHJvcGVydHlTZW1hbnRpY1JvbGUSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9VTlNQRUNJRklFRBAAEjEKLVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQkFDS0dST1VORF9DT0xPUhABEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfVEVYVF9DT0xPUhACEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFORUxfQk9SREVSX0NPTE9SEAMSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9PUEFDSVRZEAQSLgoqUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQU5FTF9DT1JORVJfUkFESVVTEAUSLQopUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QUklNQVJZX1RFWFRfQ09MT1IQFBIvCitQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1NFQ09OREFSWV9URVhUX0NPTE9SEBUSJAogUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9URVhUX1NJWkUQFhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1RJVExFX1RFWFRfU0laRRAXEicKI1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQUNDRU5UX0NPTE9SECgSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TVUNDRVNTX0NPTE9SECkSKAokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9XQVJOSU5HX0NPTE9SECoSJgoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9DT0xPUhArEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfRElTQUJMRURfQ09MT1IQLBItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NVUlJFTlRfVEFTS19DT0xPUhA8Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfVVBDT01JTkdfVEFTS19DT0xPUhA9Ei8KK1BST1BFUlRZX1NFTUFOVElDX1JPTEVfQ09NUExFVEVEX1RBU0tfQ09MT1IQPhItCilQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0JMT0NLRURfVEFTS19DT0xPUhA/Ei4KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BUSU9OQUxfVEFTS19DT0xPUhBAEikKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfT1BFUkFUT1JfQ09MT1IQUBImCiJQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX0NPTE9SEFESLAooUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9TSEFSRURfVEFTS19DT0xPUhBSEisKJ1BST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VQRVJWSVNPUl9DT0xPUhBTEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUEFSVF9DT0xPUhBkEiUKIVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVE9PTF9DT0xPUhBlEiYKIlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQVNTRVRfQ09MT1IQZhIqCiZQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX0NPTlRBSU5FUl9DT0xPUhBnEi0KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfVEFSR0VUX0dIT1NUX0NPTE9SEHgSMQotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9UQVJHRVRfSElHSExJR0hUX0NPTE9SEHkSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9QQVRIX0NPTE9SEHoSJQohUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9aT05FX0NPTE9SEHsSJwojUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9BTkNIT1JfQ09MT1IQfBIsCidQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1JPQk9UX1BBVEhfQ09MT1IQjAESMgotUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9ST0JPVF9TSUxIT1VFVFRFX0NPTE9SEI0BEi4KKVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfSU5URU5UX0NPTE9SEI4BEjEKLFBST1BFUlRZX1NFTUFOVElDX1JPTEVfUk9CT1RfT0NDVVBBTkNZX0NPTE9SEI8BEikKJFBST1BFUlRZX1NFTUFOVElDX1JPTEVfU1VDQ0VTU19TT1VORBCgARIpCiRQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX1dBUk5JTkdfU09VTkQQoQESJwoiUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9FUlJPUl9TT1VORBCiARItCihQUk9QRVJUWV9TRU1BTlRJQ19ST0xFX05PVElGSUNBVElPTl9JQ09OEKMBEioKJVBST1BFUlRZX1NFTUFOVElDX1JPTEVfUFVMU0VfRFVSQVRJT04QtAESKQokUFJPUEVSVFlfU0VNQU5USUNfUk9MRV9GQURFX0RVUkFUSU9OELUBEisKJlBST1BFUlRZX1NFTUFOVElDX1JPTEVfQU5JTUFUSU9OX1NQRUVEELYBEi8KKlBST1BFUlRZX1NFTUFOVElDX1JPTEVfSElHSExJR0hUX1RISUNLTkVTUxC3ASpmCg1Qcm9wZXJ0eVNjb3BlEh4KGlBST1BFUlRZX1NDT1BFX1VOU1BFQ0lGSUVEEAASGQoVUFJPUEVSVFlfU0NPUEVfRU5USVRZEAESGgoWUFJPUEVSVFlfU0NPUEVfUlVOVElNRRACQqUBCg1jb20uY29tbW9uLnYxQg1Qcm9wZXJ0eVByb3RvUAFaN2dpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9jb21tb24vdjE7Y29tbW9udjGiAgNDWFiqAhJNZXNzYWdlcy5Db21tb24uVjHKAglDb21tb25cVjHiAhVDb21tb25cVjFcR1BCTWV0YWRhdGHqAgpDb21tb246OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_color, file_geometry_v1_anchor, file_geometry_v1_pose, file_geometry_v1_vector3, file_validation_v1_predefined_string_rules]);
24
24
 
25
25
  /**
26
26
  * PropertyDefinition
@@ -60,6 +60,13 @@ export type PropertyDefinition = Message<"common.v1.PropertyDefinition"> & {
60
60
  */
61
61
  id: string;
62
62
 
63
+ /**
64
+ * Stable machine-readable key; unlike name, this is safe for runtime binding and capability references.
65
+ *
66
+ * @generated from field: string key = 17;
67
+ */
68
+ key: string;
69
+
63
70
  /**
64
71
  * @generated from field: string name = 2;
65
72
  */
@@ -731,6 +738,13 @@ export type CreatePropertyMessage = Message<"common.v1.CreatePropertyMessage"> &
731
738
  */
732
739
  semanticRole: PropertySemanticRole;
733
740
 
741
+ /**
742
+ * Stable machine-readable key copied to PropertyDefinition.
743
+ *
744
+ * @generated from field: string key = 17;
745
+ */
746
+ key: string;
747
+
734
748
  /**
735
749
  * Template instance
736
750
  *
@@ -36,7 +36,7 @@ import type { Message } from "@bufbuild/protobuf";
36
36
  * Describes the file process/v1/task_definition.proto.
37
37
  */
38
38
  export const file_process_v1_task_definition: GenFile = /*@__PURE__*/
39
- fileDesc("CiBwcm9jZXNzL3YxL3Rhc2tfZGVmaW5pdGlvbi5wcm90bxIKcHJvY2Vzcy52MSJ3Cg1Qcm9kdWN0VGFyZ2V0Eg8KB25vZGVfaWQYASABKAkSJQoScGFydF9kZWZpbml0aW9uX2lkGAIgASgJQgm6SAZyBMjxBAESLgoMbG9jYWxfdGFyZ2V0GAMgASgLMhguZ2VvbWV0cnkudjEuTG9jYWxUYXJnZXQijAEKD0NvbnRhaW5lclRhcmdldBIqChdjb250YWluZXJfZGVmaW5pdGlvbl9pZBgBIAEoCUIJukgGcgTI8gQBEg8KB3Nsb3RfaWQYAiABKAkSPAoJc2xvdF90eXBlGAMgASgOMh8ucmVzb3VyY2VzLnYxLkNvbnRhaW5lclNsb3RUeXBlQgi6SAWCAQIQASKMAQoOUmVzb3VyY2VUYXJnZXQSJgoTYXNzZXRfZGVmaW5pdGlvbl9pZBgBIAEoCUIJukgGcgSw8QQBEiYKE3JvYm90X2RlZmluaXRpb25faWQYAiABKAlCCbpIBnIEoPEEARIqChdjb250YWluZXJfZGVmaW5pdGlvbl9pZBgDIAEoCUIJukgGcgTI8gQBIpYBCgpUYXNrVGFyZ2V0EioKB3Byb2R1Y3QYASABKAsyGS5wcm9jZXNzLnYxLlByb2R1Y3RUYXJnZXQSLgoJY29udGFpbmVyGAIgASgLMhsucHJvY2Vzcy52MS5Db250YWluZXJUYXJnZXQSLAoIcmVzb3VyY2UYAyABKAsyGi5wcm9jZXNzLnYxLlJlc291cmNlVGFyZ2V0IkwKE1F1YW50aXR5UmVxdWlyZW1lbnQSHgoGYW1vdW50GAEgASgBQg66SAsSCSEAAAAAAAAAABIVCgR1bml0GAIgASgJQge6SARyAhABImoKDFRhc2tFbmRwb2ludBIqCgdwcm9kdWN0GAEgASgLMhkucHJvY2Vzcy52MS5Qcm9kdWN0VGFyZ2V0Ei4KCWNvbnRhaW5lchgCIAEoCzIbLnByb2Nlc3MudjEuQ29udGFpbmVyVGFyZ2V0Iq0CChVWYWxpZGF0aW9uUmVxdWlyZW1lbnQSHQoVcmVxdWlyZV90b29sX2ZlZWRiYWNrGAEgASgIEhwKFHJlcXVpcmVfdmlzaW9uX2NoZWNrGAIgASgIEiEKGWFsbG93X21hbnVhbF9jb25maXJtYXRpb24YAyABKAgSSgodbWFudWFsX2NvbmZpcm1hdGlvbl9taW5fbGV2ZWwYBCABKA4yGS5jYXBhYmlsaXR5LnYxLlNraWxsTGV2ZWxCCLpIBYIBAhABEjQKBG1vZGUYBSABKA4yHC5yZXNvdXJjZXMudjEuVmFsaWRhdGlvbk1vZGVCCLpIBYIBAhABEjIKC2NvbnN0cmFpbnRzGAYgAygLMh0uY29tbW9uLnYxLktleVZhbHVlQ29uc3RyYWludCKnAwoTVGFza0V4ZWN1dGlvblBvbGljeRJDChVhc3NpZ25tZW50X3ByZWZlcmVuY2UYASABKA4yJC5wcm9jZXNzLnYxLlRhc2tBc3NpZ25tZW50UHJlZmVyZW5jZRI4ChBhY3Rvcl9jb25zdHJhaW50GAIgASgLMh4uY2FwYWJpbGl0eS52MS5BY3RvckNvbnN0cmFpbnQSFAoMY2FuX3JlYXNzaWduGAMgASgIEhAKCGNhbl91bmRvGAQgASgIEkoKG2FjdG9yX3VuYXZhaWxhYmlsaXR5X3BvbGljeRgIIAEoDjIlLnByb2Nlc3MudjEuQWN0b3JVbmF2YWlsYWJpbGl0eVBvbGljeRI+Chhlc3RpbWF0ZWRfaHVtYW5fZHVyYXRpb24YBSABKAsyHC5jb21tb24udjEuRXN0aW1hdGVkRHVyYXRpb24SPgoYZXN0aW1hdGVkX3JvYm90X2R1cmF0aW9uGAYgASgLMhwuY29tbW9uLnYxLkVzdGltYXRlZER1cmF0aW9uEh0KFXJlcXVpcmVfZnVsbF9ndWlkYW5jZRgHIAEoCCLXAQoMVGFza092ZXJyaWRlEiYKBHdoZW4YASADKAsyGC52YXJpYW5jZS52MS5WYXJpYW50UnVsZRIYChBpbnN0cnVjdGlvbl90ZXh0GAIgASgJEiYKBnRhcmdldBgDIAEoCzIWLnByb2Nlc3MudjEuVGFza1RhcmdldBIuChBpbnNlcnRpb25fb2Zmc2V0GAQgASgLMhQuZ2VvbWV0cnkudjEuVmVjdG9yMxItCg9hcHByb2FjaF9vZmZzZXQYBSABKAsyFC5nZW9tZXRyeS52MS5WZWN0b3IzItcGCg5UYXNrRGVmaW5pdGlvbhIKCgJpZBgBIAEoCRIXCgRuYW1lGAIgASgJQgm6SAZyBIDxBAESDAoEaWNvbhgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIYChBpbnN0cnVjdGlvbl90ZXh0GAUgASgJEiAKD3NlcXVlbmNlX251bWJlchgGIAEoBUIHukgEGgIoABIxCgl0YXNrX3R5cGUYByABKA4yFC5wcm9jZXNzLnYxLlRhc2tUeXBlQgi6SAWCAQIQARImCgZ0YXJnZXQYCCABKAsyFi5wcm9jZXNzLnYxLlRhc2tUYXJnZXQSLgoQaW5zZXJ0aW9uX29mZnNldBgJIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLQoPYXBwcm9hY2hfb2Zmc2V0GAogASgLMhQuZ2VvbWV0cnkudjEuVmVjdG9yMxI4ChB0b29sX3JlcXVpcmVtZW50GAwgASgLMh4uY2FwYWJpbGl0eS52MS5Ub29sUmVxdWlyZW1lbnQSOwoSc2tpbGxfcmVxdWlyZW1lbnRzGA0gAygLMh8uY2FwYWJpbGl0eS52MS5Ta2lsbFJlcXVpcmVtZW50EjUKCnZhbGlkYXRpb24YDiABKAsyIS5wcm9jZXNzLnYxLlZhbGlkYXRpb25SZXF1aXJlbWVudBI5ChBleGVjdXRpb25fcG9saWN5GA8gASgLMh8ucHJvY2Vzcy52MS5UYXNrRXhlY3V0aW9uUG9saWN5EjQKEHNhZmV0eV9yZWxldmFuY2UYECABKA4yGi5jb21tb24udjEuU2FmZXR5UmVsZXZhbmNlEigKBnNvdXJjZRgRIAEoCzIYLnByb2Nlc3MudjEuVGFza0VuZHBvaW50Ei0KC2Rlc3RpbmF0aW9uGBIgASgLMhgucHJvY2Vzcy52MS5UYXNrRW5kcG9pbnQSMQoIcXVhbnRpdHkYEyABKAsyHy5wcm9jZXNzLnYxLlF1YW50aXR5UmVxdWlyZW1lbnQSLwoNYXBwbGljYWJpbGl0eRgVIAMoCzIYLnZhcmlhbmNlLnYxLlZhcmlhbnRSdWxlEisKCW92ZXJyaWRlcxgWIAMoCzIYLnByb2Nlc3MudjEuVGFza092ZXJyaWRlIjwKD1Rhc2tEZWZpbml0aW9ucxIpCgVpdGVtcxgBIAMoCzIaLnByb2Nlc3MudjEuVGFza0RlZmluaXRpb24qvwMKCFRhc2tUeXBlEhkKFVRBU0tfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVRBU0tfVFlQRV9JTlNQRUNUEAESFAoQVEFTS19UWVBFX0ZBU1RFThACEhYKElRBU0tfVFlQRV9VTkZBU1RFThADEhMKD1RBU0tfVFlQRV9NT1VOVBAEEhUKEVRBU0tfVFlQRV9VTk1PVU5UEAUSEgoOVEFTS19UWVBFX01PVkUQBhIUChBUQVNLX1RZUEVfUkVNT1ZFEAcSEwoPVEFTS19UWVBFX0FQUExZEAgSEgoOVEFTS19UWVBFX1dJUEUQCRITCg9UQVNLX1RZUEVfQUxJR04QChIUChBUQVNLX1RZUEVfSU5TRVJUEAsSEgoOVEFTS19UWVBFX0hPTEQQDBIUChBUQVNLX1RZUEVfVkVSSUZZEA0SEgoOVEFTS19UWVBFX1BJQ0sQDhITCg9UQVNLX1RZUEVfUExBQ0UQDxISCg5UQVNLX1RZUEVfU0NBThAQEhIKDlRBU0tfVFlQRV9XQUlUEBESEwoPVEFTS19UWVBFX0NIRUNLEBISGQoVVEFTS19UWVBFX0FDS05PV0xFREdFEBMqnQIKGFRhc2tBc3NpZ25tZW50UHJlZmVyZW5jZRIqCiZUQVNLX0FTU0lHTk1FTlRfUFJFRkVSRU5DRV9VTlNQRUNJRklFRBAAEisKJ1RBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX1BSRUZFUl9IVU1BThABEikKJVRBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX09OTFlfSFVNQU4QAhIrCidUQVNLX0FTU0lHTk1FTlRfUFJFRkVSRU5DRV9QUkVGRVJfUk9CT1QQAxIpCiVUQVNLX0FTU0lHTk1FTlRfUFJFRkVSRU5DRV9PTkxZX1JPQk9UEAQSJQohVEFTS19BU1NJR05NRU5UX1BSRUZFUkVOQ0VfRUlUSEVSEAUq5wEKGUFjdG9yVW5hdmFpbGFiaWxpdHlQb2xpY3kSKwonQUNUT1JfVU5BVkFJTEFCSUxJVFlfUE9MSUNZX1VOU1BFQ0lGSUVEEAASLgoqQUNUT1JfVU5BVkFJTEFCSUxJVFlfUE9MSUNZX1dBSVRfRk9SX0FDVE9SEAESNwozQUNUT1JfVU5BVkFJTEFCSUxJVFlfUE9MSUNZX1JFQVNTSUdOX0lGX05PVF9TVEFSVEVEEAISNAowQUNUT1JfVU5BVkFJTEFCSUxJVFlfUE9MSUNZX1NVU1BFTkRfQU5EX1JFQVNTSUdOEANCsgEKDmNvbS5wcm9jZXNzLnYxQhNUYXNrRGVmaW5pdGlvblByb3RvUAFaOWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9wcm9jZXNzL3YxO3Byb2Nlc3N2MaICA1BYWKoCE01lc3NhZ2VzLlByb2Nlc3MuVjHKAgpQcm9jZXNzXFYx4gIWUHJvY2Vzc1xWMVxHUEJNZXRhZGF0YeoCC1Byb2Nlc3M6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_capability_v1_actor_constraint, file_capability_v1_actor_skill, file_capability_v1_skill_requirement, file_capability_v1_tool_requirement, file_common_v1_enums, file_common_v1_key_value_constraint, file_common_v1_time, file_geometry_v1_local_target, file_geometry_v1_vector3, file_resources_v1_asset_definition, file_resources_v1_container_definition, file_validation_v1_predefined_string_rules, file_variance_v1_variant_rule]);
39
+ fileDesc("CiBwcm9jZXNzL3YxL3Rhc2tfZGVmaW5pdGlvbi5wcm90bxIKcHJvY2Vzcy52MSJ3Cg1Qcm9kdWN0VGFyZ2V0Eg8KB25vZGVfaWQYASABKAkSJQoScGFydF9kZWZpbml0aW9uX2lkGAIgASgJQgm6SAZyBMjxBAESLgoMbG9jYWxfdGFyZ2V0GAMgASgLMhguZ2VvbWV0cnkudjEuTG9jYWxUYXJnZXQijAEKD0NvbnRhaW5lclRhcmdldBIqChdjb250YWluZXJfZGVmaW5pdGlvbl9pZBgBIAEoCUIJukgGcgTI8gQBEg8KB3Nsb3RfaWQYAiABKAkSPAoJc2xvdF90eXBlGAMgASgOMh8ucmVzb3VyY2VzLnYxLkNvbnRhaW5lclNsb3RUeXBlQgi6SAWCAQIQASKMAQoOUmVzb3VyY2VUYXJnZXQSJgoTYXNzZXRfZGVmaW5pdGlvbl9pZBgBIAEoCUIJukgGcgSw8QQBEiYKE3JvYm90X2RlZmluaXRpb25faWQYAiABKAlCCbpIBnIEoPEEARIqChdjb250YWluZXJfZGVmaW5pdGlvbl9pZBgDIAEoCUIJukgGcgTI8gQBIpYBCgpUYXNrVGFyZ2V0EioKB3Byb2R1Y3QYASABKAsyGS5wcm9jZXNzLnYxLlByb2R1Y3RUYXJnZXQSLgoJY29udGFpbmVyGAIgASgLMhsucHJvY2Vzcy52MS5Db250YWluZXJUYXJnZXQSLAoIcmVzb3VyY2UYAyABKAsyGi5wcm9jZXNzLnYxLlJlc291cmNlVGFyZ2V0Ik4KE1F1YW50aXR5UmVxdWlyZW1lbnQSIAoGYW1vdW50GAEgASgBQhC6SA0SC0ABIQAAAAAAAAAAEhUKBHVuaXQYAiABKAlCB7pIBHICEAEiagoMVGFza0VuZHBvaW50EioKB3Byb2R1Y3QYASABKAsyGS5wcm9jZXNzLnYxLlByb2R1Y3RUYXJnZXQSLgoJY29udGFpbmVyGAIgASgLMhsucHJvY2Vzcy52MS5Db250YWluZXJUYXJnZXQirQIKFVZhbGlkYXRpb25SZXF1aXJlbWVudBIdChVyZXF1aXJlX3Rvb2xfZmVlZGJhY2sYASABKAgSHAoUcmVxdWlyZV92aXNpb25fY2hlY2sYAiABKAgSIQoZYWxsb3dfbWFudWFsX2NvbmZpcm1hdGlvbhgDIAEoCBJKCh1tYW51YWxfY29uZmlybWF0aW9uX21pbl9sZXZlbBgEIAEoDjIZLmNhcGFiaWxpdHkudjEuU2tpbGxMZXZlbEIIukgFggECEAESNAoEbW9kZRgFIAEoDjIcLnJlc291cmNlcy52MS5WYWxpZGF0aW9uTW9kZUIIukgFggECEAESMgoLY29uc3RyYWludHMYBiADKAsyHS5jb21tb24udjEuS2V5VmFsdWVDb25zdHJhaW50Ir8GChNUYXNrRXhlY3V0aW9uUG9saWN5Ek0KFWFzc2lnbm1lbnRfcHJlZmVyZW5jZRgBIAEoDjIkLnByb2Nlc3MudjEuVGFza0Fzc2lnbm1lbnRQcmVmZXJlbmNlQgi6SAWCAQIQARI4ChBhY3Rvcl9jb25zdHJhaW50GAIgASgLMh4uY2FwYWJpbGl0eS52MS5BY3RvckNvbnN0cmFpbnQSFAoMY2FuX3JlYXNzaWduGAMgASgIEhAKCGNhbl91bmRvGAQgASgIElQKG2FjdG9yX3VuYXZhaWxhYmlsaXR5X3BvbGljeRgIIAEoDjIlLnByb2Nlc3MudjEuQWN0b3JVbmF2YWlsYWJpbGl0eVBvbGljeUIIukgFggECEAESPgoYZXN0aW1hdGVkX2h1bWFuX2R1cmF0aW9uGAUgASgLMhwuY29tbW9uLnYxLkVzdGltYXRlZER1cmF0aW9uEj4KGGVzdGltYXRlZF9yb2JvdF9kdXJhdGlvbhgGIAEoCzIcLmNvbW1vbi52MS5Fc3RpbWF0ZWREdXJhdGlvbhIdChVyZXF1aXJlX2Z1bGxfZ3VpZGFuY2UYByABKAg6gQO6SP0CGvoCCkd0YXNrX2V4ZWN1dGlvbl9wb2xpY3kuYWN0b3JfdW5hdmFpbGFiaWxpdHlfcG9saWN5LnJlcXVpcmVzX3JlYXNzaWdubWVudBI/cmVhc3NpZ25tZW50IGFjdG9yLXVuYXZhaWxhYmlsaXR5IHBvbGljaWVzIHJlcXVpcmUgY2FuX3JlYXNzaWduGu0BdGhpcy5jYW5fcmVhc3NpZ24gfHwgISh0aGlzLmFjdG9yX3VuYXZhaWxhYmlsaXR5X3BvbGljeSBpbiBbcHJvY2Vzcy52MS5BY3RvclVuYXZhaWxhYmlsaXR5UG9saWN5LkFDVE9SX1VOQVZBSUxBQklMSVRZX1BPTElDWV9SRUFTU0lHTl9JRl9OT1RfU1RBUlRFRCwgcHJvY2Vzcy52MS5BY3RvclVuYXZhaWxhYmlsaXR5UG9saWN5LkFDVE9SX1VOQVZBSUxBQklMSVRZX1BPTElDWV9TVVNQRU5EX0FORF9SRUFTU0lHTl0pItcBCgxUYXNrT3ZlcnJpZGUSJgoEd2hlbhgBIAMoCzIYLnZhcmlhbmNlLnYxLlZhcmlhbnRSdWxlEhgKEGluc3RydWN0aW9uX3RleHQYAiABKAkSJgoGdGFyZ2V0GAMgASgLMhYucHJvY2Vzcy52MS5UYXNrVGFyZ2V0Ei4KEGluc2VydGlvbl9vZmZzZXQYBCABKAsyFC5nZW9tZXRyeS52MS5WZWN0b3IzEi0KD2FwcHJvYWNoX29mZnNldBgFIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMieAoVT3JpZW50YXRpb25Db25zdHJhaW50EkEKGWFuZ3VsYXJfdG9sZXJhbmNlX2RlZ3JlZXMYASABKAFCGbpIFhIUQAEZAAAAAACAZkApAAAAAAAAAABIAIgBAUIcChpfYW5ndWxhcl90b2xlcmFuY2VfZGVncmVlcyJ1Cg5UYXNrQ29uc3RyYWludBIVCgJpZBgBIAEoCUIJukgGcgTg8wQBEjYKC29yaWVudGF0aW9uGAogASgLMiEucHJvY2Vzcy52MS5PcmllbnRhdGlvbkNvbnN0cmFpbnQ6FLpIESIPCgtvcmllbnRhdGlvbhABIoYKCg5UYXNrRGVmaW5pdGlvbhIKCgJpZBgBIAEoCRIXCgRuYW1lGAIgASgJQgm6SAZyBIDxBAESDAoEaWNvbhgDIAEoCRITCgtkZXNjcmlwdGlvbhgEIAEoCRIYChBpbnN0cnVjdGlvbl90ZXh0GAUgASgJEiAKD3NlcXVlbmNlX251bWJlchgGIAEoBUIHukgEGgIoABIxCgl0YXNrX3R5cGUYByABKA4yFC5wcm9jZXNzLnYxLlRhc2tUeXBlQgi6SAWCAQIQARImCgZ0YXJnZXQYCCABKAsyFi5wcm9jZXNzLnYxLlRhc2tUYXJnZXQSLgoQaW5zZXJ0aW9uX29mZnNldBgJIAEoCzIULmdlb21ldHJ5LnYxLlZlY3RvcjMSLQoPYXBwcm9hY2hfb2Zmc2V0GAogASgLMhQuZ2VvbWV0cnkudjEuVmVjdG9yMxI4ChB0b29sX3JlcXVpcmVtZW50GAwgASgLMh4uY2FwYWJpbGl0eS52MS5Ub29sUmVxdWlyZW1lbnQSOwoSc2tpbGxfcmVxdWlyZW1lbnRzGA0gAygLMh8uY2FwYWJpbGl0eS52MS5Ta2lsbFJlcXVpcmVtZW50EjUKCnZhbGlkYXRpb24YDiABKAsyIS5wcm9jZXNzLnYxLlZhbGlkYXRpb25SZXF1aXJlbWVudBI5ChBleGVjdXRpb25fcG9saWN5GA8gASgLMh8ucHJvY2Vzcy52MS5UYXNrRXhlY3V0aW9uUG9saWN5EjQKEHNhZmV0eV9yZWxldmFuY2UYECABKA4yGi5jb21tb24udjEuU2FmZXR5UmVsZXZhbmNlEigKBnNvdXJjZRgRIAEoCzIYLnByb2Nlc3MudjEuVGFza0VuZHBvaW50Ei0KC2Rlc3RpbmF0aW9uGBIgASgLMhgucHJvY2Vzcy52MS5UYXNrRW5kcG9pbnQSMQoIcXVhbnRpdHkYEyABKAsyHy5wcm9jZXNzLnYxLlF1YW50aXR5UmVxdWlyZW1lbnQSLwoNYXBwbGljYWJpbGl0eRgVIAMoCzIYLnZhcmlhbmNlLnYxLlZhcmlhbnRSdWxlEisKCW92ZXJyaWRlcxgWIAMoCzIYLnByb2Nlc3MudjEuVGFza092ZXJyaWRlErIBCgtjb25zdHJhaW50cxgXIAMoCzIaLnByb2Nlc3MudjEuVGFza0NvbnN0cmFpbnRCgAG6SH26AXoKJnRhc2tfZGVmaW5pdGlvbi5jb25zdHJhaW50cy51bmlxdWVfaWRzEiJ0YXNrIGNvbnN0cmFpbnQgaWRzIG11c3QgYmUgdW5pcXVlGix0aGlzLm1hcChjb25zdHJhaW50LCBjb25zdHJhaW50LmlkKS51bmlxdWUoKTr3AbpI8wEa8AEKQnRhc2tfZGVmaW5pdGlvbi5vcmllbnRhdGlvbl9jb25zdHJhaW50X3JlcXVpcmVzX3RhcmdldF9vcmllbnRhdGlvbhJHb3JpZW50YXRpb24gY29uc3RyYWludHMgcmVxdWlyZSB0YXJnZXQucHJvZHVjdC5sb2NhbF90YXJnZXQub3JpZW50YXRpb24aYXRoaXMuY29uc3RyYWludHMuYWxsKGMsICFoYXMoYy5vcmllbnRhdGlvbikgfHwgaGFzKHRoaXMudGFyZ2V0LnByb2R1Y3QubG9jYWxfdGFyZ2V0Lm9yaWVudGF0aW9uKSkiPAoPVGFza0RlZmluaXRpb25zEikKBWl0ZW1zGAEgAygLMhoucHJvY2Vzcy52MS5UYXNrRGVmaW5pdGlvbiq/AwoIVGFza1R5cGUSGQoVVEFTS19UWVBFX1VOU1BFQ0lGSUVEEAASFQoRVEFTS19UWVBFX0lOU1BFQ1QQARIUChBUQVNLX1RZUEVfRkFTVEVOEAISFgoSVEFTS19UWVBFX1VORkFTVEVOEAMSEwoPVEFTS19UWVBFX01PVU5UEAQSFQoRVEFTS19UWVBFX1VOTU9VTlQQBRISCg5UQVNLX1RZUEVfTU9WRRAGEhQKEFRBU0tfVFlQRV9SRU1PVkUQBxITCg9UQVNLX1RZUEVfQVBQTFkQCBISCg5UQVNLX1RZUEVfV0lQRRAJEhMKD1RBU0tfVFlQRV9BTElHThAKEhQKEFRBU0tfVFlQRV9JTlNFUlQQCxISCg5UQVNLX1RZUEVfSE9MRBAMEhQKEFRBU0tfVFlQRV9WRVJJRlkQDRISCg5UQVNLX1RZUEVfUElDSxAOEhMKD1RBU0tfVFlQRV9QTEFDRRAPEhIKDlRBU0tfVFlQRV9TQ0FOEBASEgoOVEFTS19UWVBFX1dBSVQQERITCg9UQVNLX1RZUEVfQ0hFQ0sQEhIZChVUQVNLX1RZUEVfQUNLTk9XTEVER0UQEyqdAgoYVGFza0Fzc2lnbm1lbnRQcmVmZXJlbmNlEioKJlRBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX1VOU1BFQ0lGSUVEEAASKwonVEFTS19BU1NJR05NRU5UX1BSRUZFUkVOQ0VfUFJFRkVSX0hVTUFOEAESKQolVEFTS19BU1NJR05NRU5UX1BSRUZFUkVOQ0VfT05MWV9IVU1BThACEisKJ1RBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX1BSRUZFUl9ST0JPVBADEikKJVRBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX09OTFlfUk9CT1QQBBIlCiFUQVNLX0FTU0lHTk1FTlRfUFJFRkVSRU5DRV9FSVRIRVIQBSrnAQoZQWN0b3JVbmF2YWlsYWJpbGl0eVBvbGljeRIrCidBQ1RPUl9VTkFWQUlMQUJJTElUWV9QT0xJQ1lfVU5TUEVDSUZJRUQQABIuCipBQ1RPUl9VTkFWQUlMQUJJTElUWV9QT0xJQ1lfV0FJVF9GT1JfQUNUT1IQARI3CjNBQ1RPUl9VTkFWQUlMQUJJTElUWV9QT0xJQ1lfUkVBU1NJR05fSUZfTk9UX1NUQVJURUQQAhI0CjBBQ1RPUl9VTkFWQUlMQUJJTElUWV9QT0xJQ1lfU1VTUEVORF9BTkRfUkVBU1NJR04QA0KyAQoOY29tLnByb2Nlc3MudjFCE1Rhc2tEZWZpbml0aW9uUHJvdG9QAVo5Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3Byb2Nlc3MvdjE7cHJvY2Vzc3YxogIDUFhYqgITTWVzc2FnZXMuUHJvY2Vzcy5WMcoCClByb2Nlc3NcVjHiAhZQcm9jZXNzXFYxXEdQQk1ldGFkYXRh6gILUHJvY2Vzczo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_capability_v1_actor_constraint, file_capability_v1_actor_skill, file_capability_v1_skill_requirement, file_capability_v1_tool_requirement, file_common_v1_enums, file_common_v1_key_value_constraint, file_common_v1_time, file_geometry_v1_local_target, file_geometry_v1_vector3, file_resources_v1_asset_definition, file_resources_v1_container_definition, file_validation_v1_predefined_string_rules, file_variance_v1_variant_rule]);
40
40
 
41
41
  /**
42
42
  * @generated from message process.v1.ProductTarget
@@ -283,8 +283,6 @@ export const ValidationRequirementSchema: GenMessage<ValidationRequirement> = /*
283
283
  messageDesc(file_process_v1_task_definition, 6);
284
284
 
285
285
  /**
286
- * TODO: ActorUnavailabilityPolicy 2 and 3 only allowed when `can_reassign = true`
287
- *
288
286
  * @generated from message process.v1.TaskExecutionPolicy
289
287
  */
290
288
  export type TaskExecutionPolicy = Message<"process.v1.TaskExecutionPolicy"> & {
@@ -386,6 +384,57 @@ export type TaskOverride = Message<"process.v1.TaskOverride"> & {
386
384
  export const TaskOverrideSchema: GenMessage<TaskOverride> = /*@__PURE__*/
387
385
  messageDesc(file_process_v1_task_definition, 8);
388
386
 
387
+ /**
388
+ * Requires the observed orientation to be within an angular tolerance of the
389
+ * orientation in TaskDefinition.target.product.local_target. The target pose
390
+ * remains authoritative and is intentionally not duplicated here.
391
+ *
392
+ * @generated from message process.v1.OrientationConstraint
393
+ */
394
+ export type OrientationConstraint = Message<"process.v1.OrientationConstraint"> & {
395
+ /**
396
+ * Maximum angular difference from the target orientation. When omitted, the
397
+ * validating implementation may apply its configured default tolerance.
398
+ *
399
+ * @generated from field: optional double angular_tolerance_degrees = 1;
400
+ */
401
+ angularToleranceDegrees?: number;
402
+ };
403
+
404
+ /**
405
+ * Describes the message process.v1.OrientationConstraint.
406
+ * Use `create(OrientationConstraintSchema)` to create a new message.
407
+ */
408
+ export const OrientationConstraintSchema: GenMessage<OrientationConstraint> = /*@__PURE__*/
409
+ messageDesc(file_process_v1_task_definition, 9);
410
+
411
+ /**
412
+ * A semantic condition that can be evaluated while executing or validating a
413
+ * task. Exactly one constraint kind must be selected.
414
+ *
415
+ * @generated from message process.v1.TaskConstraint
416
+ */
417
+ export type TaskConstraint = Message<"process.v1.TaskConstraint"> & {
418
+ /**
419
+ * Stable identifier within the task definition.
420
+ *
421
+ * @generated from field: string id = 1;
422
+ */
423
+ id: string;
424
+
425
+ /**
426
+ * @generated from field: process.v1.OrientationConstraint orientation = 10;
427
+ */
428
+ orientation?: OrientationConstraint;
429
+ };
430
+
431
+ /**
432
+ * Describes the message process.v1.TaskConstraint.
433
+ * Use `create(TaskConstraintSchema)` to create a new message.
434
+ */
435
+ export const TaskConstraintSchema: GenMessage<TaskConstraint> = /*@__PURE__*/
436
+ messageDesc(file_process_v1_task_definition, 10);
437
+
389
438
  /**
390
439
  * TaskDefinition is the static/universal authoring-time description of a task.
391
440
  *
@@ -527,6 +576,13 @@ export type TaskDefinition = Message<"process.v1.TaskDefinition"> & {
527
576
  * @generated from field: repeated process.v1.TaskOverride overrides = 22;
528
577
  */
529
578
  overrides: TaskOverride[];
579
+
580
+ /**
581
+ * Semantic conditions that supplement the task's validation mechanism.
582
+ *
583
+ * @generated from field: repeated process.v1.TaskConstraint constraints = 23;
584
+ */
585
+ constraints: TaskConstraint[];
530
586
  };
531
587
 
532
588
  /**
@@ -534,7 +590,7 @@ export type TaskDefinition = Message<"process.v1.TaskDefinition"> & {
534
590
  * Use `create(TaskDefinitionSchema)` to create a new message.
535
591
  */
536
592
  export const TaskDefinitionSchema: GenMessage<TaskDefinition> = /*@__PURE__*/
537
- messageDesc(file_process_v1_task_definition, 9);
593
+ messageDesc(file_process_v1_task_definition, 11);
538
594
 
539
595
  /**
540
596
  * @generated from message process.v1.TaskDefinitions
@@ -551,7 +607,7 @@ export type TaskDefinitions = Message<"process.v1.TaskDefinitions"> & {
551
607
  * Use `create(TaskDefinitionsSchema)` to create a new message.
552
608
  */
553
609
  export const TaskDefinitionsSchema: GenMessage<TaskDefinitions> = /*@__PURE__*/
554
- messageDesc(file_process_v1_task_definition, 10);
610
+ messageDesc(file_process_v1_task_definition, 12);
555
611
 
556
612
  /**
557
613
  * @generated from enum process.v1.TaskType
@@ -14,7 +14,7 @@ import type { Message } from "@bufbuild/protobuf";
14
14
  * Describes the file runtime/v1/runtime_requests.proto.
15
15
  */
16
16
  export const file_runtime_v1_runtime_requests: GenFile = /*@__PURE__*/
17
- fileDesc("CiFydW50aW1lL3YxL3J1bnRpbWVfcmVxdWVzdHMucHJvdG8SCnJ1bnRpbWUudjEibwoTUHJvY2Vzc0Fib3J0UmVxdWVzdBIkCg5wcm9jZXNzX3J1bl9pZBgBIAEoCUIMukgJyAEBcgSI8gQBEg4KBnJlYXNvbhgCIAEoCRIiChFleHBlY3RlZF9yZXZpc2lvbhgDIAEoBEIHukgEMgIoASLEAQoWVGFza1N0YXRlQ2hhbmdlUmVxdWVzdBIhCgt0YXNrX3J1bl9pZBgBIAEoCUIMukgJyAEBcgSY8gQBEjgKBXN0YXRlGAIgASgOMhwucnVudGltZS52MS5UYXNrU3RhdGVSZXF1ZXN0Qgu6SAjIAQGCAQIQARISCgplcnJvcl9jb2RlGAMgASgJEhUKDWVycm9yX21lc3NhZ2UYBCABKAkSIgoRZXhwZWN0ZWRfcmV2aXNpb24YBSABKARCB7pIBDICKAEiiAEKE1Rhc2tSZWFzc2lnblJlcXVlc3QSIQoLdGFza19ydW5faWQYASABKAlCDLpICcgBAXIEmPIEARIqCgVhY3RvchgCIAEoCzITLmNvbW1vbi52MS5BY3RvclJlZkIGukgDyAEBEiIKEWV4cGVjdGVkX3JldmlzaW9uGAMgASgEQge6SAQyAigBIt0BChJUYXNrUHJvZ3Jlc3NVcGRhdGUSIQoLdGFza19ydW5faWQYASABKAlCDLpICcgBAXIEmPIEARIqCgVhY3RvchgCIAEoCzITLmNvbW1vbi52MS5BY3RvclJlZkIGukgDyAEBEg8KB21lc3NhZ2UYAyABKAkSHQoMZWxhcHNlZF90aW1lGAQgASgFQge6SAQaAigAEiQKE2VzdGltYXRlZF90aW1lX2xlZnQYBSABKAVCB7pIBBoCKAASIgoRZXhwZWN0ZWRfcmV2aXNpb24YBiABKARCB7pIBDICKAEikAEKF1NlcXVlbmNlUmVhc3NpZ25SZXF1ZXN0EiUKD3NlcXVlbmNlX3J1bl9pZBgBIAEoCUIMukgJyAEBcgSQ8gQBEioKBWFjdG9yGAIgASgLMhMuY29tbW9uLnYxLkFjdG9yUmVmQga6SAPIAQESIgoRZXhwZWN0ZWRfcmV2aXNpb24YAyABKARCB7pIBDICKAEiZAoXU2VxdWVuY2VDb21wbGV0ZVJlcXVlc3QSJQoPc2VxdWVuY2VfcnVuX2lkGAEgASgJQgy6SAnIAQFyBJDyBAESIgoRZXhwZWN0ZWRfcmV2aXNpb24YAiABKARCB7pIBDICKAEq1AEKEFRhc2tTdGF0ZVJlcXVlc3QSIgoeVEFTS19TVEFURV9SRVFVRVNUX1VOU1BFQ0lGSUVEEAASIgoeVEFTS19TVEFURV9SRVFVRVNUX0lOX1BST0dSRVNTEAESGwoXVEFTS19TVEFURV9SRVFVRVNUX0RPTkUQAhIbChdUQVNLX1NUQVRFX1JFUVVFU1RfVU5ETxADEhwKGFRBU0tfU1RBVEVfUkVRVUVTVF9FUlJPUhAEEiAKHFRBU0tfU1RBVEVfUkVRVUVTVF9TVVNQRU5ERUQQBkKzAQoOY29tLnJ1bnRpbWUudjFCFFJ1bnRpbWVSZXF1ZXN0c1Byb3RvUAFaOWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9ydW50aW1lL3YxO3J1bnRpbWV2MaICA1JYWKoCE01lc3NhZ2VzLlJ1bnRpbWUuVjHKAgpSdW50aW1lXFYx4gIWUnVudGltZVxWMVxHUEJNZXRhZGF0YeoCC1J1bnRpbWU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_actor, file_validation_v1_predefined_string_rules]);
17
+ fileDesc("CiFydW50aW1lL3YxL3J1bnRpbWVfcmVxdWVzdHMucHJvdG8SCnJ1bnRpbWUudjEibwoTUHJvY2Vzc0Fib3J0UmVxdWVzdBIkCg5wcm9jZXNzX3J1bl9pZBgBIAEoCUIMukgJyAEBcgSI8gQBEg4KBnJlYXNvbhgCIAEoCRIiChFleHBlY3RlZF9yZXZpc2lvbhgDIAEoBEIHukgEMgIoASLEAQoWVGFza1N0YXRlQ2hhbmdlUmVxdWVzdBIhCgt0YXNrX3J1bl9pZBgBIAEoCUIMukgJyAEBcgSY8gQBEjgKBXN0YXRlGAIgASgOMhwucnVudGltZS52MS5UYXNrU3RhdGVSZXF1ZXN0Qgu6SAjIAQGCAQIQARISCgplcnJvcl9jb2RlGAMgASgJEhUKDWVycm9yX21lc3NhZ2UYBCABKAkSIgoRZXhwZWN0ZWRfcmV2aXNpb24YBSABKARCB7pIBDICKAEiiAEKE1Rhc2tSZWFzc2lnblJlcXVlc3QSIQoLdGFza19ydW5faWQYASABKAlCDLpICcgBAXIEmPIEARIqCgVhY3RvchgCIAEoCzITLmNvbW1vbi52MS5BY3RvclJlZkIGukgDyAEBEiIKEWV4cGVjdGVkX3JldmlzaW9uGAMgASgEQge6SAQyAigBIvMDChJUYXNrUHJvZ3Jlc3NVcGRhdGUSIQoLdGFza19ydW5faWQYASABKAlCDLpICcgBAXIEmPIEARIqCgVhY3RvchgCIAEoCzITLmNvbW1vbi52MS5BY3RvclJlZkIGukgDyAEBEg8KB21lc3NhZ2UYAyABKAkSHQoMZWxhcHNlZF90aW1lGAQgASgFQge6SAQaAigAEiQKE2VzdGltYXRlZF90aW1lX2xlZnQYBSABKAVCB7pIBBoCKAASIgoRZXhwZWN0ZWRfcmV2aXNpb24YBiABKARCB7pIBDICKAESNgoFcGhhc2UYByABKA4yHS5ydW50aW1lLnYxLlRhc2tQcm9ncmVzc1BoYXNlQgi6SAWCAQIQARIwChBwaGFzZV9jb25maWRlbmNlGAggASgCQhG6SA4KDEABHQAAgD8tAAAAAEgAiAEBOpQBukiQARqNAQoudGFza19wcm9ncmVzc191cGRhdGUuY29uZmlkZW5jZV9yZXF1aXJlc19waGFzZRIrcGhhc2VfY29uZmlkZW5jZSByZXF1aXJlcyBhIHNwZWNpZmllZCBwaGFzZRouIWhhcyh0aGlzLnBoYXNlX2NvbmZpZGVuY2UpIHx8IHRoaXMucGhhc2UgIT0gMEITChFfcGhhc2VfY29uZmlkZW5jZSKQAQoXU2VxdWVuY2VSZWFzc2lnblJlcXVlc3QSJQoPc2VxdWVuY2VfcnVuX2lkGAEgASgJQgy6SAnIAQFyBJDyBAESKgoFYWN0b3IYAiABKAsyEy5jb21tb24udjEuQWN0b3JSZWZCBrpIA8gBARIiChFleHBlY3RlZF9yZXZpc2lvbhgDIAEoBEIHukgEMgIoASJkChdTZXF1ZW5jZUNvbXBsZXRlUmVxdWVzdBIlCg9zZXF1ZW5jZV9ydW5faWQYASABKAlCDLpICcgBAXIEkPIEARIiChFleHBlY3RlZF9yZXZpc2lvbhgCIAEoBEIHukgEMgIoASrUAQoQVGFza1N0YXRlUmVxdWVzdBIiCh5UQVNLX1NUQVRFX1JFUVVFU1RfVU5TUEVDSUZJRUQQABIiCh5UQVNLX1NUQVRFX1JFUVVFU1RfSU5fUFJPR1JFU1MQARIbChdUQVNLX1NUQVRFX1JFUVVFU1RfRE9ORRACEhsKF1RBU0tfU1RBVEVfUkVRVUVTVF9VTkRPEAMSHAoYVEFTS19TVEFURV9SRVFVRVNUX0VSUk9SEAQSIAocVEFTS19TVEFURV9SRVFVRVNUX1NVU1BFTkRFRBAGKuUCChFUYXNrUHJvZ3Jlc3NQaGFzZRIjCh9UQVNLX1BST0dSRVNTX1BIQVNFX1VOU1BFQ0lGSUVEEAASIQodVEFTS19QUk9HUkVTU19QSEFTRV9QUkVQQVJJTkcQARIrCidUQVNLX1BST0dSRVNTX1BIQVNFX0FDUVVJUklOR19SRVNPVVJDRVMQAhIgChxUQVNLX1BST0dSRVNTX1BIQVNFX0xPQ0FUSU5HEAMSIwofVEFTS19QUk9HUkVTU19QSEFTRV9BUFBST0FDSElORxAEEiEKHVRBU0tfUFJPR1JFU1NfUEhBU0VfRVhFQ1VUSU5HEAUSIwofVEFTS19QUk9HUkVTU19QSEFTRV9QT1NJVElPTklORxAGEiEKHVRBU0tfUFJPR1JFU1NfUEhBU0VfVkVSSUZZSU5HEAcSKQolVEFTS19QUk9HUkVTU19QSEFTRV9SRUFEWV9UT19DT01QTEVURRAIQrMBCg5jb20ucnVudGltZS52MUIUUnVudGltZVJlcXVlc3RzUHJvdG9QAVo5Z2l0aHViLmNvbS9jb2JvdGFyL3Byb3RvY29sL21lc3NhZ2VzL3J1bnRpbWUvdjE7cnVudGltZXYxogIDUlhYqgITTWVzc2FnZXMuUnVudGltZS5WMcoCClJ1bnRpbWVcVjHiAhZSdW50aW1lXFYxXEdQQk1ldGFkYXRh6gILUnVudGltZTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_common_v1_actor, file_validation_v1_predefined_string_rules]);
18
18
 
19
19
  /**
20
20
  * @generated from message runtime.v1.ProcessAbortRequest
@@ -152,6 +152,20 @@ export type TaskProgressUpdate = Message<"runtime.v1.TaskProgressUpdate"> & {
152
152
  * @generated from field: uint64 expected_revision = 6;
153
153
  */
154
154
  expectedRevision: bigint;
155
+
156
+ /**
157
+ * Optional semantic execution phase. UNSPECIFIED preserves compatibility with phase-unaware reporters.
158
+ *
159
+ * @generated from field: runtime.v1.TaskProgressPhase phase = 7;
160
+ */
161
+ phase: TaskProgressPhase;
162
+
163
+ /**
164
+ * Reporter confidence in phase, from 0 (no confidence) to 1 (fully confident).
165
+ *
166
+ * @generated from field: optional float phase_confidence = 8;
167
+ */
168
+ phaseConfidence?: number;
155
169
  };
156
170
 
157
171
  /**
@@ -261,3 +275,79 @@ export enum TaskStateRequest {
261
275
  export const TaskStateRequestSchema: GenEnum<TaskStateRequest> = /*@__PURE__*/
262
276
  enumDesc(file_runtime_v1_runtime_requests, 0);
263
277
 
278
+ /**
279
+ * Fine-grained progress within an in-progress task. This complements
280
+ * TaskRunState and deliberately does not include a completed phase; completion
281
+ * is represented by TASK_RUN_STATE_DONE.
282
+ *
283
+ * @generated from enum runtime.v1.TaskProgressPhase
284
+ */
285
+ export enum TaskProgressPhase {
286
+ /**
287
+ * @generated from enum value: TASK_PROGRESS_PHASE_UNSPECIFIED = 0;
288
+ */
289
+ UNSPECIFIED = 0,
290
+
291
+ /**
292
+ * The actor is preparing for starting the task
293
+ *
294
+ * @generated from enum value: TASK_PROGRESS_PHASE_PREPARING = 1;
295
+ */
296
+ PREPARING = 1,
297
+
298
+ /**
299
+ * The actor is acquiring resources for the task
300
+ *
301
+ * @generated from enum value: TASK_PROGRESS_PHASE_ACQUIRING_RESOURCES = 2;
302
+ */
303
+ ACQUIRING_RESOURCES = 2,
304
+
305
+ /**
306
+ * The actor is finding the target, part, tool, or work area.
307
+ *
308
+ * @generated from enum value: TASK_PROGRESS_PHASE_LOCATING = 3;
309
+ */
310
+ LOCATING = 3,
311
+
312
+ /**
313
+ * The actor is moving toward the target or preferred pre-target pose.
314
+ *
315
+ * @generated from enum value: TASK_PROGRESS_PHASE_APPROACHING = 4;
316
+ */
317
+ APPROACHING = 4,
318
+
319
+ /**
320
+ * The actor is executing the task
321
+ *
322
+ * @generated from enum value: TASK_PROGRESS_PHASE_EXECUTING = 5;
323
+ */
324
+ EXECUTING = 5,
325
+
326
+ /**
327
+ * The actor is aligning, inserting, or otherwise establishing the target pose.
328
+ *
329
+ * @generated from enum value: TASK_PROGRESS_PHASE_POSITIONING = 6;
330
+ */
331
+ POSITIONING = 6,
332
+
333
+ /**
334
+ * The task result is being checked against its validation requirements.
335
+ *
336
+ * @generated from enum value: TASK_PROGRESS_PHASE_VERIFYING = 7;
337
+ */
338
+ VERIFYING = 7,
339
+
340
+ /**
341
+ * All known requirements are satisfied and the task may be completed.
342
+ *
343
+ * @generated from enum value: TASK_PROGRESS_PHASE_READY_TO_COMPLETE = 8;
344
+ */
345
+ READY_TO_COMPLETE = 8,
346
+ }
347
+
348
+ /**
349
+ * Describes the enum runtime.v1.TaskProgressPhase.
350
+ */
351
+ export const TaskProgressPhaseSchema: GenEnum<TaskProgressPhase> = /*@__PURE__*/
352
+ enumDesc(file_runtime_v1_runtime_requests, 1);
353
+
@@ -26,7 +26,7 @@ import type { Message } from "@bufbuild/protobuf";
26
26
  * Describes the file runtime/v1/task_run.proto.
27
27
  */
28
28
  export const file_runtime_v1_task_run: GenFile = /*@__PURE__*/
29
- fileDesc("ChlydW50aW1lL3YxL3Rhc2tfcnVuLnByb3RvEgpydW50aW1lLnYxIowBChJUYXNrUnVudGltZUJpbmRpbmcSGQoRYXNzZXRfaW5zdGFuY2VfaWQYASABKAkSEgoKc3RhdGlvbl9pZBgCIAEoCRIPCgdjZWxsX2lkGAMgASgJEjYKDmNvbnRhaW5lcl9zbG90GAQgASgLMh4ucmVzb3VyY2VzLnYxLkNvbnRhaW5lclNsb3RSZWYiuwYKB1Rhc2tSdW4SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIMCgRpY29uGAMgASgJEigKEnRhc2tfZGVmaW5pdGlvbl9pZBgEIAEoCUIMukgJyAEBcgSw8gQBEiwKFnBhcmVudF9zZXF1ZW5jZV9ydW5faWQYBSABKAlCDLpICcgBAXIEkPIEARI0CgVzdGF0ZRgGIAEoDjIYLnJ1bnRpbWUudjEuVGFza1J1blN0YXRlQgu6SAjIAQGCAQIQARItChBjYW5kaWRhdGVfYWN0b3JzGAcgAygLMhMuY29tbW9uLnYxLkFjdG9yUmVmEisKDmFzc2lnbmVkX2FjdG9yGAggASgLMhMuY29tbW9uLnYxLkFjdG9yUmVmEg4KBmNhbl9kbxgJIAEoCBIQCghjYW5fdW5kbxgKIAEoCBIYChB3b3JrYWJsZV9ob3Jpem9uGAsgASgFEjgKEmVzdGltYXRlZF9kdXJhdGlvbhgMIAEoCzIcLmNvbW1vbi52MS5Fc3RpbWF0ZWREdXJhdGlvbhIuCgpzdGFydGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxjb21wbGV0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmVycm9yX2NvZGUYDyABKAkSFQoNZXJyb3JfbWVzc2FnZRgQIAEoCRIvCgdiaW5kaW5nGBEgASgLMh4ucnVudGltZS52MS5UYXNrUnVudGltZUJpbmRpbmcSNAoMcmVzdHJpY3Rpb25zGBMgAygLMh4ucnVudGltZS52MS5SdW50aW1lUmVzdHJpY3Rpb24SSQobY2FuZGlkYXRlX2FjdG9yX2V2YWx1YXRpb25zGBQgAygLMiQucnVudGltZS52MS5DYW5kaWRhdGVBY3RvckV2YWx1YXRpb24STgoXYWN0b3JfYXNzaWdubWVudF9zdGF0dXMYFSABKAsyJS5ydW50aW1lLnYxLlRhc2tBY3RvckFzc2lnbm1lbnRTdGF0dXNCBrpIA8gBARIZCghyZXZpc2lvbhgWIAEoBEIHukgEMgIoASIuCghUYXNrUnVucxIiCgVpdGVtcxgBIAMoCzITLnJ1bnRpbWUudjEuVGFza1J1birzAQoMVGFza1J1blN0YXRlEh4KGlRBU0tfUlVOX1NUQVRFX1VOU1BFQ0lGSUVEEAASHAoYVEFTS19SVU5fU1RBVEVfTk9UX1JFQURZEAESGAoUVEFTS19SVU5fU1RBVEVfUkVBRFkQAhIeChpUQVNLX1JVTl9TVEFURV9JTl9QUk9HUkVTUxADEhcKE1RBU0tfUlVOX1NUQVRFX0RPTkUQBBIYChRUQVNLX1JVTl9TVEFURV9FUlJPUhAFEhoKFlRBU0tfUlVOX1NUQVRFX0FCT1JURUQQBhIcChhUQVNLX1JVTl9TVEFURV9TVVNQRU5ERUQQB0KrAQoOY29tLnJ1bnRpbWUudjFCDFRhc2tSdW5Qcm90b1ABWjlnaXRodWIuY29tL2NvYm90YXIvcHJvdG9jb2wvbWVzc2FnZXMvcnVudGltZS92MTtydW50aW1ldjGiAgNSWFiqAhNNZXNzYWdlcy5SdW50aW1lLlYxygIKUnVudGltZVxWMeICFlJ1bnRpbWVcVjFcR1BCTWV0YWRhdGHqAgtSdW50aW1lOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_common_v1_actor, file_common_v1_time, file_google_protobuf_timestamp, file_resources_v1_container_definition, file_runtime_v1_actor_assignment, file_runtime_v1_process_requests, file_runtime_v1_runtime_restriction, file_validation_v1_predefined_string_rules]);
29
+ fileDesc("ChlydW50aW1lL3YxL3Rhc2tfcnVuLnByb3RvEgpydW50aW1lLnYxIuIBChJUYXNrUnVudGltZUJpbmRpbmcSJAoRYXNzZXRfaW5zdGFuY2VfaWQYASABKAlCCbpIBnIEuPEEARIdCgpzdGF0aW9uX2lkGAIgASgJQgm6SAZyBPjxBAESGgoHY2VsbF9pZBgDIAEoCUIJukgGcgS48gQBEjYKDmNvbnRhaW5lcl9zbG90GAQgASgLMh4ucmVzb3VyY2VzLnYxLkNvbnRhaW5lclNsb3RSZWYSMwobY2FuZGlkYXRlX3BhcnRfaW5zdGFuY2VfaWRzGAUgAygJQg66SAuSAQgiBnIE0PEEASK7BgoHVGFza1J1bhIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBGljb24YAyABKAkSKAoSdGFza19kZWZpbml0aW9uX2lkGAQgASgJQgy6SAnIAQFyBLDyBAESLAoWcGFyZW50X3NlcXVlbmNlX3J1bl9pZBgFIAEoCUIMukgJyAEBcgSQ8gQBEjQKBXN0YXRlGAYgASgOMhgucnVudGltZS52MS5UYXNrUnVuU3RhdGVCC7pICMgBAYIBAhABEi0KEGNhbmRpZGF0ZV9hY3RvcnMYByADKAsyEy5jb21tb24udjEuQWN0b3JSZWYSKwoOYXNzaWduZWRfYWN0b3IYCCABKAsyEy5jb21tb24udjEuQWN0b3JSZWYSDgoGY2FuX2RvGAkgASgIEhAKCGNhbl91bmRvGAogASgIEhgKEHdvcmthYmxlX2hvcml6b24YCyABKAUSOAoSZXN0aW1hdGVkX2R1cmF0aW9uGAwgASgLMhwuY29tbW9uLnYxLkVzdGltYXRlZER1cmF0aW9uEi4KCnN0YXJ0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGNvbXBsZXRlZF9hdBgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEgoKZXJyb3JfY29kZRgPIAEoCRIVCg1lcnJvcl9tZXNzYWdlGBAgASgJEi8KB2JpbmRpbmcYESABKAsyHi5ydW50aW1lLnYxLlRhc2tSdW50aW1lQmluZGluZxI0CgxyZXN0cmljdGlvbnMYEyADKAsyHi5ydW50aW1lLnYxLlJ1bnRpbWVSZXN0cmljdGlvbhJJChtjYW5kaWRhdGVfYWN0b3JfZXZhbHVhdGlvbnMYFCADKAsyJC5ydW50aW1lLnYxLkNhbmRpZGF0ZUFjdG9yRXZhbHVhdGlvbhJOChdhY3Rvcl9hc3NpZ25tZW50X3N0YXR1cxgVIAEoCzIlLnJ1bnRpbWUudjEuVGFza0FjdG9yQXNzaWdubWVudFN0YXR1c0IGukgDyAEBEhkKCHJldmlzaW9uGBYgASgEQge6SAQyAigBIi4KCFRhc2tSdW5zEiIKBWl0ZW1zGAEgAygLMhMucnVudGltZS52MS5UYXNrUnVuKvMBCgxUYXNrUnVuU3RhdGUSHgoaVEFTS19SVU5fU1RBVEVfVU5TUEVDSUZJRUQQABIcChhUQVNLX1JVTl9TVEFURV9OT1RfUkVBRFkQARIYChRUQVNLX1JVTl9TVEFURV9SRUFEWRACEh4KGlRBU0tfUlVOX1NUQVRFX0lOX1BST0dSRVNTEAMSFwoTVEFTS19SVU5fU1RBVEVfRE9ORRAEEhgKFFRBU0tfUlVOX1NUQVRFX0VSUk9SEAUSGgoWVEFTS19SVU5fU1RBVEVfQUJPUlRFRBAGEhwKGFRBU0tfUlVOX1NUQVRFX1NVU1BFTkRFRBAHQqsBCg5jb20ucnVudGltZS52MUIMVGFza1J1blByb3RvUAFaOWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9ydW50aW1lL3YxO3J1bnRpbWV2MaICA1JYWKoCE01lc3NhZ2VzLlJ1bnRpbWUuVjHKAgpSdW50aW1lXFYx4gIWUnVudGltZVxWMVxHUEJNZXRhZGF0YeoCC1J1bnRpbWU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_common_v1_actor, file_common_v1_time, file_google_protobuf_timestamp, file_resources_v1_container_definition, file_runtime_v1_actor_assignment, file_runtime_v1_process_requests, file_runtime_v1_runtime_restriction, file_validation_v1_predefined_string_rules]);
30
30
 
31
31
  /**
32
32
  * Concrete runtime/deployment bindings resolved for this task run.
@@ -35,24 +35,39 @@ export const file_runtime_v1_task_run: GenFile = /*@__PURE__*/
35
35
  */
36
36
  export type TaskRuntimeBinding = Message<"runtime.v1.TaskRuntimeBinding"> & {
37
37
  /**
38
+ * Concrete asset selected for this task run.
39
+ *
38
40
  * @generated from field: string asset_instance_id = 1;
39
41
  */
40
42
  assetInstanceId: string;
41
43
 
42
44
  /**
45
+ * Concrete station in which the task runs.
46
+ *
43
47
  * @generated from field: string station_id = 2;
44
48
  */
45
49
  stationId: string;
46
50
 
47
51
  /**
52
+ * Concrete cell in which the task runs.
53
+ *
48
54
  * @generated from field: string cell_id = 3;
49
55
  */
50
56
  cellId: string;
51
57
 
52
58
  /**
59
+ * Concrete container slot selected for source or destination work.
60
+ *
53
61
  * @generated from field: resources.v1.ContainerSlotRef container_slot = 4;
54
62
  */
55
63
  containerSlot?: ContainerSlotRef;
64
+
65
+ /**
66
+ * Candidate parts. Notice that their availability must be checked during runtime. Also, new candidates might be available.
67
+ *
68
+ * @generated from field: repeated string candidate_part_instance_ids = 5;
69
+ */
70
+ candidatePartInstanceIds: string[];
56
71
  };
57
72
 
58
73
  /**