@eide/foir-proto-ts 0.3.8 → 0.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eide/foir-proto-ts",
3
- "version": "0.3.8",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -16,6 +16,8 @@
16
16
  "./hooks/v1/hooks_connect": "./src/hooks/v1/hooks_connect.js",
17
17
  "./identity/v1/identity_pb": "./src/identity/v1/identity_pb.js",
18
18
  "./identity/v1/identity_connect": "./src/identity/v1/identity_connect.js",
19
+ "./integrations/v1/integrations_pb": "./src/integrations/v1/integrations_pb.js",
20
+ "./integrations/v1/integrations_connect": "./src/integrations/v1/integrations_connect.js",
19
21
  "./models/v1/models_pb": "./src/models/v1/models_pb.js",
20
22
  "./models/v1/models_connect": "./src/models/v1/models_connect.js",
21
23
  "./notifications/v1/notifications_pb": "./src/notifications/v1/notifications_pb.js",
@@ -0,0 +1,44 @@
1
+ // @generated by protoc-gen-connect-es v1.6.1 with parameter "import_extension=js"
2
+ // @generated from file integrations/v1/integrations.proto (package integrations.v1, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * @generated from service integrations.v1.IntegrationCredentialsService
11
+ */
12
+ export declare const IntegrationCredentialsService: {
13
+ readonly typeName: "integrations.v1.IntegrationCredentialsService",
14
+ readonly methods: {
15
+ /**
16
+ * Return the plaintext credential for (project, integration). Requires
17
+ * the caller's capability set to include credentials:read for this
18
+ * integration. On success, updates last_read_at and emits an audit row.
19
+ *
20
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.GetIntegrationCredential
21
+ */
22
+ readonly getIntegrationCredential: {
23
+ readonly name: "GetIntegrationCredential",
24
+ readonly I: typeof GetIntegrationCredentialRequest,
25
+ readonly O: typeof GetIntegrationCredentialResponse,
26
+ readonly kind: MethodKind.Unary,
27
+ },
28
+ /**
29
+ * Encrypt and store a credential for (project, integration). Overwrites
30
+ * any existing value. Requires the caller's capability set to include
31
+ * credentials:write for this integration. Emits an audit row of kind
32
+ * credential_write.
33
+ *
34
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.WriteIntegrationCredential
35
+ */
36
+ readonly writeIntegrationCredential: {
37
+ readonly name: "WriteIntegrationCredential",
38
+ readonly I: typeof WriteIntegrationCredentialRequest,
39
+ readonly O: typeof WriteIntegrationCredentialResponse,
40
+ readonly kind: MethodKind.Unary,
41
+ },
42
+ }
43
+ };
44
+
@@ -0,0 +1,44 @@
1
+ // @generated by protoc-gen-connect-es v1.6.1 with parameter "import_extension=js"
2
+ // @generated from file integrations/v1/integrations.proto (package integrations.v1, syntax proto3)
3
+ /* eslint-disable */
4
+ // @ts-nocheck
5
+
6
+ import { GetIntegrationCredentialRequest, GetIntegrationCredentialResponse, WriteIntegrationCredentialRequest, WriteIntegrationCredentialResponse } from "./integrations_pbjs";
7
+ import { MethodKind } from "@bufbuild/protobuf";
8
+
9
+ /**
10
+ * @generated from service integrations.v1.IntegrationCredentialsService
11
+ */
12
+ export const IntegrationCredentialsService = {
13
+ typeName: "integrations.v1.IntegrationCredentialsService",
14
+ methods: {
15
+ /**
16
+ * Return the plaintext credential for (project, integration). Requires
17
+ * the caller's capability set to include credentials:read for this
18
+ * integration. On success, updates last_read_at and emits an audit row.
19
+ *
20
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.GetIntegrationCredential
21
+ */
22
+ getIntegrationCredential: {
23
+ name: "GetIntegrationCredential",
24
+ I: GetIntegrationCredentialRequest,
25
+ O: GetIntegrationCredentialResponse,
26
+ kind: MethodKind.Unary,
27
+ },
28
+ /**
29
+ * Encrypt and store a credential for (project, integration). Overwrites
30
+ * any existing value. Requires the caller's capability set to include
31
+ * credentials:write for this integration. Emits an audit row of kind
32
+ * credential_write.
33
+ *
34
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.WriteIntegrationCredential
35
+ */
36
+ writeIntegrationCredential: {
37
+ name: "WriteIntegrationCredential",
38
+ I: WriteIntegrationCredentialRequest,
39
+ O: WriteIntegrationCredentialResponse,
40
+ kind: MethodKind.Unary,
41
+ },
42
+ }
43
+ };
44
+
@@ -0,0 +1,684 @@
1
+ // @generated by protoc-gen-es v2.11.0 with parameter "import_extension=js"
2
+ // @generated from file integrations/v1/integrations.proto (package integrations.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { JsonObject, Message } from "@bufbuild/protobuf";
7
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
8
+
9
+ /**
10
+ * Describes the file integrations/v1/integrations.proto.
11
+ */
12
+ export declare const file_integrations_v1_integrations: GenFile;
13
+
14
+ /**
15
+ * Middleware reference. v1 carries only the URL but is defined as a message
16
+ * so additional fields (timeouts, retry hints, etc.) can be added later
17
+ * without a schema migration.
18
+ *
19
+ * @generated from message integrations.v1.IntegrationMiddleware
20
+ */
21
+ export declare type IntegrationMiddleware = Message<"integrations.v1.IntegrationMiddleware"> & {
22
+ /**
23
+ * @generated from field: string url = 1;
24
+ */
25
+ url: string;
26
+ };
27
+
28
+ /**
29
+ * Describes the message integrations.v1.IntegrationMiddleware.
30
+ * Use `create(IntegrationMiddlewareSchema)` to create a new message.
31
+ */
32
+ export declare const IntegrationMiddlewareSchema: GenMessage<IntegrationMiddleware>;
33
+
34
+ /**
35
+ * External-service credentials. The `values` blob is never populated on
36
+ * read endpoints — it is written separately via the dedicated credentials
37
+ * endpoint and stored encrypted. It is present in the message so admin-UI
38
+ * and CLI write paths can carry authorized values end-to-end in a single
39
+ * request where appropriate.
40
+ *
41
+ * @generated from message integrations.v1.IntegrationCredentials
42
+ */
43
+ export declare type IntegrationCredentials = Message<"integrations.v1.IntegrationCredentials"> & {
44
+ /**
45
+ * @generated from field: integrations.v1.CredentialStrategy strategy = 1;
46
+ */
47
+ strategy: CredentialStrategy;
48
+
49
+ /**
50
+ * @generated from field: optional google.protobuf.Struct values = 2;
51
+ */
52
+ values?: JsonObject;
53
+ };
54
+
55
+ /**
56
+ * Describes the message integrations.v1.IntegrationCredentials.
57
+ * Use `create(IntegrationCredentialsSchema)` to create a new message.
58
+ */
59
+ export declare const IntegrationCredentialsSchema: GenMessage<IntegrationCredentials>;
60
+
61
+ /**
62
+ * A single field in a model seed. Carries the type and any options the
63
+ * CLI/admin UI needs to create the seeded field. Kept deliberately flat —
64
+ * this is a bootstrap schema, not an ongoing declaration. The model's
65
+ * long-term shape lives under `models.<key>`.
66
+ *
67
+ * @generated from message integrations.v1.ModelSeedField
68
+ */
69
+ export declare type ModelSeedField = Message<"integrations.v1.ModelSeedField"> & {
70
+ /**
71
+ * @generated from field: string type = 1;
72
+ */
73
+ type: string;
74
+
75
+ /**
76
+ * @generated from field: bool required = 2;
77
+ */
78
+ required: boolean;
79
+
80
+ /**
81
+ * @generated from field: bool natural_key = 3;
82
+ */
83
+ naturalKey: boolean;
84
+
85
+ /**
86
+ * @generated from field: optional string label = 4;
87
+ */
88
+ label?: string;
89
+
90
+ /**
91
+ * @generated from field: optional string help_text = 5;
92
+ */
93
+ helpText?: string;
94
+
95
+ /**
96
+ * @generated from field: optional google.protobuf.Struct config = 6;
97
+ */
98
+ config?: JsonObject;
99
+ };
100
+
101
+ /**
102
+ * Describes the message integrations.v1.ModelSeedField.
103
+ * Use `create(ModelSeedFieldSchema)` to create a new message.
104
+ */
105
+ export declare const ModelSeedFieldSchema: GenMessage<ModelSeedField>;
106
+
107
+ /**
108
+ * Optional one-time bootstrap schema used at first push if the target model
109
+ * doesn't yet exist. Ignored on every subsequent push — the model's shape
110
+ * lives under `models` from that point on.
111
+ *
112
+ * @generated from message integrations.v1.ModelSeed
113
+ */
114
+ export declare type ModelSeed = Message<"integrations.v1.ModelSeed"> & {
115
+ /**
116
+ * @generated from field: map<string, integrations.v1.ModelSeedField> fields = 1;
117
+ */
118
+ fields: { [key: string]: ModelSeedField };
119
+ };
120
+
121
+ /**
122
+ * Describes the message integrations.v1.ModelSeed.
123
+ * Use `create(ModelSeedSchema)` to create a new message.
124
+ */
125
+ export declare const ModelSeedSchema: GenMessage<ModelSeed>;
126
+
127
+ /**
128
+ * Per-source-type sync mapping. Declares which foir model a source type
129
+ * writes into, which foir field holds the upstream natural key, and the
130
+ * explicit field mapping. No auto-inference, no alias tables.
131
+ *
132
+ * @generated from message integrations.v1.IntegrationSyncMapping
133
+ */
134
+ export declare type IntegrationSyncMapping = Message<"integrations.v1.IntegrationSyncMapping"> & {
135
+ /**
136
+ * foir model key that this source type writes into.
137
+ *
138
+ * @generated from field: string model = 1;
139
+ */
140
+ model: string;
141
+
142
+ /**
143
+ * foir field holding the upstream natural key. UPSERTs are keyed on this.
144
+ *
145
+ * @generated from field: string natural_key = 2;
146
+ */
147
+ naturalKey: string;
148
+
149
+ /**
150
+ * Explicit field mapping: source field name -> foir field key.
151
+ * Unmapped source fields are discarded at runtime.
152
+ *
153
+ * @generated from field: map<string, string> fields = 3;
154
+ */
155
+ fields: { [key: string]: string };
156
+
157
+ /**
158
+ * Optional one-time bootstrap schema if the target model is missing.
159
+ *
160
+ * @generated from field: optional integrations.v1.ModelSeed model_seed = 4;
161
+ */
162
+ modelSeed?: ModelSeed;
163
+ };
164
+
165
+ /**
166
+ * Describes the message integrations.v1.IntegrationSyncMapping.
167
+ * Use `create(IntegrationSyncMappingSchema)` to create a new message.
168
+ */
169
+ export declare const IntegrationSyncMappingSchema: GenMessage<IntegrationSyncMapping>;
170
+
171
+ /**
172
+ * Status reported by the middleware after each sync cycle and on meaningful
173
+ * state transitions. Nothing here is computed platform-side — the middleware
174
+ * is the source of truth for its own status.
175
+ *
176
+ * @generated from message integrations.v1.IntegrationStatus
177
+ */
178
+ export declare type IntegrationStatus = Message<"integrations.v1.IntegrationStatus"> & {
179
+ /**
180
+ * @generated from field: optional google.protobuf.Timestamp last_sync_at = 1;
181
+ */
182
+ lastSyncAt?: Timestamp;
183
+
184
+ /**
185
+ * @generated from field: optional int64 last_sync_duration_ms = 2;
186
+ */
187
+ lastSyncDurationMs?: bigint;
188
+
189
+ /**
190
+ * @generated from field: optional int64 last_sync_record_count = 3;
191
+ */
192
+ lastSyncRecordCount?: bigint;
193
+
194
+ /**
195
+ * @generated from field: optional string last_error = 4;
196
+ */
197
+ lastError?: string;
198
+
199
+ /**
200
+ * @generated from field: optional google.protobuf.Timestamp last_error_at = 5;
201
+ */
202
+ lastErrorAt?: Timestamp;
203
+
204
+ /**
205
+ * @generated from field: integrations.v1.SubscriptionHealth subscription_health = 6;
206
+ */
207
+ subscriptionHealth: SubscriptionHealth;
208
+
209
+ /**
210
+ * @generated from field: integrations.v1.AuthStatus auth_status = 7;
211
+ */
212
+ authStatus: AuthStatus;
213
+
214
+ /**
215
+ * Free-text description of the middleware's delete handling for admin
216
+ * display. e.g. "soft (deletedAt field)", "hard", "ignore".
217
+ *
218
+ * @generated from field: optional string deletion_strategy = 8;
219
+ */
220
+ deletionStrategy?: string;
221
+ };
222
+
223
+ /**
224
+ * Describes the message integrations.v1.IntegrationStatus.
225
+ * Use `create(IntegrationStatusSchema)` to create a new message.
226
+ */
227
+ export declare const IntegrationStatusSchema: GenMessage<IntegrationStatus>;
228
+
229
+ /**
230
+ * The full per-project integration declaration. Lives in the platform;
231
+ * declared from foir.config.ts or the admin UI.
232
+ *
233
+ * @generated from message integrations.v1.IntegrationConfig
234
+ */
235
+ export declare type IntegrationConfig = Message<"integrations.v1.IntegrationConfig"> & {
236
+ /**
237
+ * Kebab-case name, unique per project. Matches the key in foir.config.ts
238
+ * under `integrations.<name>`.
239
+ *
240
+ * @generated from field: string name = 1;
241
+ */
242
+ name: string;
243
+
244
+ /**
245
+ * @generated from field: bool enabled = 2;
246
+ */
247
+ enabled: boolean;
248
+
249
+ /**
250
+ * @generated from field: integrations.v1.IntegrationMiddleware middleware = 3;
251
+ */
252
+ middleware?: IntegrationMiddleware;
253
+
254
+ /**
255
+ * @generated from field: integrations.v1.IntegrationCredentials credentials = 4;
256
+ */
257
+ credentials?: IntegrationCredentials;
258
+
259
+ /**
260
+ * Sync mapping, keyed by source-type name (e.g. "product", "collection").
261
+ *
262
+ * @generated from field: map<string, integrations.v1.IntegrationSyncMapping> sync = 5;
263
+ */
264
+ sync: { [key: string]: IntegrationSyncMapping };
265
+
266
+ /**
267
+ * Opaque middleware-specific settings. The platform and CLI do not
268
+ * interpret this blob — the middleware reads and validates it at runtime.
269
+ *
270
+ * @generated from field: optional google.protobuf.Struct settings = 6;
271
+ */
272
+ settings?: JsonObject;
273
+
274
+ /**
275
+ * Optional metadata for admin-UI display (display name, description,
276
+ * category). Unused by the runtime.
277
+ *
278
+ * @generated from field: optional google.protobuf.Struct metadata = 7;
279
+ */
280
+ metadata?: JsonObject;
281
+ };
282
+
283
+ /**
284
+ * Describes the message integrations.v1.IntegrationConfig.
285
+ * Use `create(IntegrationConfigSchema)` to create a new message.
286
+ */
287
+ export declare const IntegrationConfigSchema: GenMessage<IntegrationConfig>;
288
+
289
+ /**
290
+ * @generated from message integrations.v1.ExtensionPlacement
291
+ */
292
+ export declare type ExtensionPlacement = Message<"integrations.v1.ExtensionPlacement"> & {
293
+ /**
294
+ * @generated from field: integrations.v1.ExtensionTarget target = 1;
295
+ */
296
+ target: ExtensionTarget;
297
+
298
+ /**
299
+ * foir model key this placement attaches to.
300
+ *
301
+ * @generated from field: string model = 2;
302
+ */
303
+ model: string;
304
+
305
+ /**
306
+ * Tab key used as an HTML slug and as the SDK addressable id.
307
+ *
308
+ * @generated from field: string tab = 3;
309
+ */
310
+ tab: string;
311
+
312
+ /**
313
+ * Human-readable tab title shown in the admin UI.
314
+ *
315
+ * @generated from field: string title = 4;
316
+ */
317
+ title: string;
318
+
319
+ /**
320
+ * Optional free-form hints for the placement (icon, ordering, etc.).
321
+ *
322
+ * @generated from field: optional google.protobuf.Struct hints = 5;
323
+ */
324
+ hints?: JsonObject;
325
+ };
326
+
327
+ /**
328
+ * Describes the message integrations.v1.ExtensionPlacement.
329
+ * Use `create(ExtensionPlacementSchema)` to create a new message.
330
+ */
331
+ export declare const ExtensionPlacementSchema: GenMessage<ExtensionPlacement>;
332
+
333
+ /**
334
+ * @generated from message integrations.v1.ExtensionConfig
335
+ */
336
+ export declare type ExtensionConfig = Message<"integrations.v1.ExtensionConfig"> & {
337
+ /**
338
+ * Kebab-case name, unique per project.
339
+ *
340
+ * @generated from field: string name = 1;
341
+ */
342
+ name: string;
343
+
344
+ /**
345
+ * https URL of the iframe app. The admin UI loads this URL in an iframe
346
+ * at the declared placements.
347
+ *
348
+ * @generated from field: string url = 2;
349
+ */
350
+ url: string;
351
+
352
+ /**
353
+ * @generated from field: repeated integrations.v1.ExtensionPlacement placements = 3;
354
+ */
355
+ placements: ExtensionPlacement[];
356
+
357
+ /**
358
+ * Optional metadata for admin-UI display.
359
+ *
360
+ * @generated from field: optional google.protobuf.Struct metadata = 4;
361
+ */
362
+ metadata?: JsonObject;
363
+ };
364
+
365
+ /**
366
+ * Describes the message integrations.v1.ExtensionConfig.
367
+ * Use `create(ExtensionConfigSchema)` to create a new message.
368
+ */
369
+ export declare const ExtensionConfigSchema: GenMessage<ExtensionConfig>;
370
+
371
+ /**
372
+ * A single credential slot for one (project, integration). The encrypted
373
+ * payload's plaintext shape is middleware-specific (Shopify OAuth token,
374
+ * Stripe API key, SSH keypair, etc.) — the platform treats it as opaque
375
+ * bytes and never parses it.
376
+ *
377
+ * @generated from message integrations.v1.IntegrationCredentialValue
378
+ */
379
+ export declare type IntegrationCredentialValue = Message<"integrations.v1.IntegrationCredentialValue"> & {
380
+ /**
381
+ * Plaintext credential bytes. Populated on read responses (after successful
382
+ * capability check + decryption) and on write requests. NEVER populated on
383
+ * any other response.
384
+ *
385
+ * @generated from field: bytes value = 1;
386
+ */
387
+ value: Uint8Array;
388
+
389
+ /**
390
+ * Identifier of the key that encrypted this value at rest. Carried across
391
+ * the wire so rotation is possible without breaking old rows.
392
+ *
393
+ * @generated from field: string encryption_key_id = 2;
394
+ */
395
+ encryptionKeyId: string;
396
+
397
+ /**
398
+ * When the credential was last decrypted and returned to a caller. Updated
399
+ * on every successful GetIntegrationCredential call. Null if never read.
400
+ *
401
+ * @generated from field: optional google.protobuf.Timestamp last_read_at = 3;
402
+ */
403
+ lastReadAt?: Timestamp;
404
+
405
+ /**
406
+ * When the credential was last written. Null if never written.
407
+ *
408
+ * @generated from field: optional google.protobuf.Timestamp last_written_at = 4;
409
+ */
410
+ lastWrittenAt?: Timestamp;
411
+ };
412
+
413
+ /**
414
+ * Describes the message integrations.v1.IntegrationCredentialValue.
415
+ * Use `create(IntegrationCredentialValueSchema)` to create a new message.
416
+ */
417
+ export declare const IntegrationCredentialValueSchema: GenMessage<IntegrationCredentialValue>;
418
+
419
+ /**
420
+ * @generated from message integrations.v1.GetIntegrationCredentialRequest
421
+ */
422
+ export declare type GetIntegrationCredentialRequest = Message<"integrations.v1.GetIntegrationCredentialRequest"> & {
423
+ /**
424
+ * @generated from field: string project_id = 1;
425
+ */
426
+ projectId: string;
427
+
428
+ /**
429
+ * @generated from field: string integration_name = 2;
430
+ */
431
+ integrationName: string;
432
+ };
433
+
434
+ /**
435
+ * Describes the message integrations.v1.GetIntegrationCredentialRequest.
436
+ * Use `create(GetIntegrationCredentialRequestSchema)` to create a new message.
437
+ */
438
+ export declare const GetIntegrationCredentialRequestSchema: GenMessage<GetIntegrationCredentialRequest>;
439
+
440
+ /**
441
+ * @generated from message integrations.v1.GetIntegrationCredentialResponse
442
+ */
443
+ export declare type GetIntegrationCredentialResponse = Message<"integrations.v1.GetIntegrationCredentialResponse"> & {
444
+ /**
445
+ * @generated from field: integrations.v1.IntegrationCredentialValue credential = 1;
446
+ */
447
+ credential?: IntegrationCredentialValue;
448
+ };
449
+
450
+ /**
451
+ * Describes the message integrations.v1.GetIntegrationCredentialResponse.
452
+ * Use `create(GetIntegrationCredentialResponseSchema)` to create a new message.
453
+ */
454
+ export declare const GetIntegrationCredentialResponseSchema: GenMessage<GetIntegrationCredentialResponse>;
455
+
456
+ /**
457
+ * @generated from message integrations.v1.WriteIntegrationCredentialRequest
458
+ */
459
+ export declare type WriteIntegrationCredentialRequest = Message<"integrations.v1.WriteIntegrationCredentialRequest"> & {
460
+ /**
461
+ * @generated from field: string project_id = 1;
462
+ */
463
+ projectId: string;
464
+
465
+ /**
466
+ * @generated from field: string integration_name = 2;
467
+ */
468
+ integrationName: string;
469
+
470
+ /**
471
+ * Plaintext bytes to encrypt and store. Replaces any existing value for
472
+ * this (project, integration).
473
+ *
474
+ * @generated from field: bytes value = 3;
475
+ */
476
+ value: Uint8Array;
477
+
478
+ /**
479
+ * Optional correlation context to include in the audit log entry
480
+ * (webhook delivery id, manual trigger id, admin action id, etc.).
481
+ *
482
+ * @generated from field: optional string context = 4;
483
+ */
484
+ context?: string;
485
+ };
486
+
487
+ /**
488
+ * Describes the message integrations.v1.WriteIntegrationCredentialRequest.
489
+ * Use `create(WriteIntegrationCredentialRequestSchema)` to create a new message.
490
+ */
491
+ export declare const WriteIntegrationCredentialRequestSchema: GenMessage<WriteIntegrationCredentialRequest>;
492
+
493
+ /**
494
+ * @generated from message integrations.v1.WriteIntegrationCredentialResponse
495
+ */
496
+ export declare type WriteIntegrationCredentialResponse = Message<"integrations.v1.WriteIntegrationCredentialResponse"> & {
497
+ /**
498
+ * Metadata about the newly stored credential. Never includes the plaintext.
499
+ *
500
+ * @generated from field: string encryption_key_id = 1;
501
+ */
502
+ encryptionKeyId: string;
503
+
504
+ /**
505
+ * @generated from field: google.protobuf.Timestamp last_written_at = 2;
506
+ */
507
+ lastWrittenAt?: Timestamp;
508
+ };
509
+
510
+ /**
511
+ * Describes the message integrations.v1.WriteIntegrationCredentialResponse.
512
+ * Use `create(WriteIntegrationCredentialResponseSchema)` to create a new message.
513
+ */
514
+ export declare const WriteIntegrationCredentialResponseSchema: GenMessage<WriteIntegrationCredentialResponse>;
515
+
516
+ /**
517
+ * Credential strategies the middleware uses when talking to the external
518
+ * service. Drives which authorization flow the admin UI renders.
519
+ *
520
+ * @generated from enum integrations.v1.CredentialStrategy
521
+ */
522
+ export enum CredentialStrategy {
523
+ /**
524
+ * @generated from enum value: CREDENTIAL_STRATEGY_UNSPECIFIED = 0;
525
+ */
526
+ UNSPECIFIED = 0,
527
+
528
+ /**
529
+ * @generated from enum value: CREDENTIAL_STRATEGY_OAUTH = 1;
530
+ */
531
+ OAUTH = 1,
532
+
533
+ /**
534
+ * @generated from enum value: CREDENTIAL_STRATEGY_API_KEY = 2;
535
+ */
536
+ API_KEY = 2,
537
+
538
+ /**
539
+ * @generated from enum value: CREDENTIAL_STRATEGY_SHARED_SECRET = 3;
540
+ */
541
+ SHARED_SECRET = 3,
542
+
543
+ /**
544
+ * @generated from enum value: CREDENTIAL_STRATEGY_SSH_KEY = 4;
545
+ */
546
+ SSH_KEY = 4,
547
+
548
+ /**
549
+ * @generated from enum value: CREDENTIAL_STRATEGY_NONE = 5;
550
+ */
551
+ NONE = 5,
552
+
553
+ /**
554
+ * @generated from enum value: CREDENTIAL_STRATEGY_MANAGED = 6;
555
+ */
556
+ MANAGED = 6,
557
+ }
558
+
559
+ /**
560
+ * Describes the enum integrations.v1.CredentialStrategy.
561
+ */
562
+ export declare const CredentialStrategySchema: GenEnum<CredentialStrategy>;
563
+
564
+ /**
565
+ * Subscription health reported by the middleware for the external-service
566
+ * webhook subscription this integration depends on.
567
+ *
568
+ * @generated from enum integrations.v1.SubscriptionHealth
569
+ */
570
+ export enum SubscriptionHealth {
571
+ /**
572
+ * @generated from enum value: SUBSCRIPTION_HEALTH_UNSPECIFIED = 0;
573
+ */
574
+ UNSPECIFIED = 0,
575
+
576
+ /**
577
+ * @generated from enum value: SUBSCRIPTION_HEALTH_OK = 1;
578
+ */
579
+ OK = 1,
580
+
581
+ /**
582
+ * @generated from enum value: SUBSCRIPTION_HEALTH_STALE = 2;
583
+ */
584
+ STALE = 2,
585
+
586
+ /**
587
+ * @generated from enum value: SUBSCRIPTION_HEALTH_BROKEN = 3;
588
+ */
589
+ BROKEN = 3,
590
+ }
591
+
592
+ /**
593
+ * Describes the enum integrations.v1.SubscriptionHealth.
594
+ */
595
+ export declare const SubscriptionHealthSchema: GenEnum<SubscriptionHealth>;
596
+
597
+ /**
598
+ * Auth status reported by the middleware for the external-service credentials.
599
+ *
600
+ * @generated from enum integrations.v1.AuthStatus
601
+ */
602
+ export enum AuthStatus {
603
+ /**
604
+ * @generated from enum value: AUTH_STATUS_UNSPECIFIED = 0;
605
+ */
606
+ UNSPECIFIED = 0,
607
+
608
+ /**
609
+ * @generated from enum value: AUTH_STATUS_OK = 1;
610
+ */
611
+ OK = 1,
612
+
613
+ /**
614
+ * @generated from enum value: AUTH_STATUS_EXPIRED = 2;
615
+ */
616
+ EXPIRED = 2,
617
+
618
+ /**
619
+ * @generated from enum value: AUTH_STATUS_REVOKED = 3;
620
+ */
621
+ REVOKED = 3,
622
+ }
623
+
624
+ /**
625
+ * Describes the enum integrations.v1.AuthStatus.
626
+ */
627
+ export declare const AuthStatusSchema: GenEnum<AuthStatus>;
628
+
629
+ /**
630
+ * @generated from enum integrations.v1.ExtensionTarget
631
+ */
632
+ export enum ExtensionTarget {
633
+ /**
634
+ * @generated from enum value: EXTENSION_TARGET_UNSPECIFIED = 0;
635
+ */
636
+ UNSPECIFIED = 0,
637
+
638
+ /**
639
+ * @generated from enum value: EXTENSION_TARGET_RECORD = 1;
640
+ */
641
+ RECORD = 1,
642
+
643
+ /**
644
+ * @generated from enum value: EXTENSION_TARGET_MODEL_LIST = 2;
645
+ */
646
+ MODEL_LIST = 2,
647
+ }
648
+
649
+ /**
650
+ * Describes the enum integrations.v1.ExtensionTarget.
651
+ */
652
+ export declare const ExtensionTargetSchema: GenEnum<ExtensionTarget>;
653
+
654
+ /**
655
+ * @generated from service integrations.v1.IntegrationCredentialsService
656
+ */
657
+ export declare const IntegrationCredentialsService: GenService<{
658
+ /**
659
+ * Return the plaintext credential for (project, integration). Requires
660
+ * the caller's capability set to include credentials:read for this
661
+ * integration. On success, updates last_read_at and emits an audit row.
662
+ *
663
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.GetIntegrationCredential
664
+ */
665
+ getIntegrationCredential: {
666
+ methodKind: "unary";
667
+ input: typeof GetIntegrationCredentialRequestSchema;
668
+ output: typeof GetIntegrationCredentialResponseSchema;
669
+ },
670
+ /**
671
+ * Encrypt and store a credential for (project, integration). Overwrites
672
+ * any existing value. Requires the caller's capability set to include
673
+ * credentials:write for this integration. Emits an audit row of kind
674
+ * credential_write.
675
+ *
676
+ * @generated from rpc integrations.v1.IntegrationCredentialsService.WriteIntegrationCredential
677
+ */
678
+ writeIntegrationCredential: {
679
+ methodKind: "unary";
680
+ input: typeof WriteIntegrationCredentialRequestSchema;
681
+ output: typeof WriteIntegrationCredentialResponseSchema;
682
+ },
683
+ }>;
684
+
@@ -0,0 +1,173 @@
1
+ // @generated by protoc-gen-es v2.11.0 with parameter "import_extension=js"
2
+ // @generated from file integrations/v1/integrations.proto (package integrations.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { enumDesc, fileDesc, messageDesc, serviceDesc, tsEnum } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+
8
+ /**
9
+ * Describes the file integrations/v1/integrations.proto.
10
+ */
11
+ export const file_integrations_v1_integrations = /*@__PURE__*/
12
+ fileDesc("CiJpbnRlZ3JhdGlvbnMvdjEvaW50ZWdyYXRpb25zLnByb3RvEg9pbnRlZ3JhdGlvbnMudjEiJAoVSW50ZWdyYXRpb25NaWRkbGV3YXJlEgsKA3VybBgBIAEoCSKIAQoWSW50ZWdyYXRpb25DcmVkZW50aWFscxI1CghzdHJhdGVneRgBIAEoDjIjLmludGVncmF0aW9ucy52MS5DcmVkZW50aWFsU3RyYXRlZ3kSLAoGdmFsdWVzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgkKB192YWx1ZXMiwgEKDk1vZGVsU2VlZEZpZWxkEgwKBHR5cGUYASABKAkSEAoIcmVxdWlyZWQYAiABKAgSEwoLbmF0dXJhbF9rZXkYAyABKAgSEgoFbGFiZWwYBCABKAlIAIgBARIWCgloZWxwX3RleHQYBSABKAlIAYgBARIsCgZjb25maWcYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCCAoGX2xhYmVsQgwKCl9oZWxwX3RleHRCCQoHX2NvbmZpZyKTAQoJTW9kZWxTZWVkEjYKBmZpZWxkcxgBIAMoCzImLmludGVncmF0aW9ucy52MS5Nb2RlbFNlZWQuRmllbGRzRW50cnkaTgoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8uaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZEZpZWxkOgI4ASL0AQoWSW50ZWdyYXRpb25TeW5jTWFwcGluZxINCgVtb2RlbBgBIAEoCRITCgtuYXR1cmFsX2tleRgCIAEoCRJDCgZmaWVsZHMYAyADKAsyMy5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TeW5jTWFwcGluZy5GaWVsZHNFbnRyeRIzCgptb2RlbF9zZWVkGAQgASgLMhouaW50ZWdyYXRpb25zLnYxLk1vZGVsU2VlZEgAiAEBGi0KC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFCDQoLX21vZGVsX3NlZWQi9QMKEUludGVncmF0aW9uU3RhdHVzEjUKDGxhc3Rfc3luY19hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIiChVsYXN0X3N5bmNfZHVyYXRpb25fbXMYAiABKANIAYgBARIjChZsYXN0X3N5bmNfcmVjb3JkX2NvdW50GAMgASgDSAKIAQESFwoKbGFzdF9lcnJvchgEIAEoCUgDiAEBEjYKDWxhc3RfZXJyb3JfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESQAoTc3Vic2NyaXB0aW9uX2hlYWx0aBgGIAEoDjIjLmludGVncmF0aW9ucy52MS5TdWJzY3JpcHRpb25IZWFsdGgSMAoLYXV0aF9zdGF0dXMYByABKA4yGy5pbnRlZ3JhdGlvbnMudjEuQXV0aFN0YXR1cxIeChFkZWxldGlvbl9zdHJhdGVneRgIIAEoCUgFiAEBQg8KDV9sYXN0X3N5bmNfYXRCGAoWX2xhc3Rfc3luY19kdXJhdGlvbl9tc0IZChdfbGFzdF9zeW5jX3JlY29yZF9jb3VudEINCgtfbGFzdF9lcnJvckIQCg5fbGFzdF9lcnJvcl9hdEIUChJfZGVsZXRpb25fc3RyYXRlZ3kiuAMKEUludGVncmF0aW9uQ29uZmlnEgwKBG5hbWUYASABKAkSDwoHZW5hYmxlZBgCIAEoCBI6CgptaWRkbGV3YXJlGAMgASgLMiYuaW50ZWdyYXRpb25zLnYxLkludGVncmF0aW9uTWlkZGxld2FyZRI8CgtjcmVkZW50aWFscxgEIAEoCzInLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNyZWRlbnRpYWxzEjoKBHN5bmMYBSADKAsyLC5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25Db25maWcuU3luY0VudHJ5Ei4KCHNldHRpbmdzGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBGlQKCVN5bmNFbnRyeRILCgNrZXkYASABKAkSNgoFdmFsdWUYAiABKAsyJy5pbnRlZ3JhdGlvbnMudjEuSW50ZWdyYXRpb25TeW5jTWFwcGluZzoCOAFCCwoJX3NldHRpbmdzQgsKCV9tZXRhZGF0YSKoAQoSRXh0ZW5zaW9uUGxhY2VtZW50EjAKBnRhcmdldBgBIAEoDjIgLmludGVncmF0aW9ucy52MS5FeHRlbnNpb25UYXJnZXQSDQoFbW9kZWwYAiABKAkSCwoDdGFiGAMgASgJEg0KBXRpdGxlGAQgASgJEisKBWhpbnRzGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQggKBl9oaW50cyKiAQoPRXh0ZW5zaW9uQ29uZmlnEgwKBG5hbWUYASABKAkSCwoDdXJsGAIgASgJEjcKCnBsYWNlbWVudHMYAyADKAsyIy5pbnRlZ3JhdGlvbnMudjEuRXh0ZW5zaW9uUGxhY2VtZW50Ei4KCG1ldGFkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgsKCV9tZXRhZGF0YSLcAQoaSW50ZWdyYXRpb25DcmVkZW50aWFsVmFsdWUSDQoFdmFsdWUYASABKAwSGQoRZW5jcnlwdGlvbl9rZXlfaWQYAiABKAkSNQoMbGFzdF9yZWFkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2xhc3Rfd3JpdHRlbl9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIPCg1fbGFzdF9yZWFkX2F0QhIKEF9sYXN0X3dyaXR0ZW5fYXQiTwofR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhgKEGludGVncmF0aW9uX25hbWUYAiABKAkiYwogR2V0SW50ZWdyYXRpb25DcmVkZW50aWFsUmVzcG9uc2USPwoKY3JlZGVudGlhbBgBIAEoCzIrLmludGVncmF0aW9ucy52MS5JbnRlZ3JhdGlvbkNyZWRlbnRpYWxWYWx1ZSKCAQohV3JpdGVJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSGAoQaW50ZWdyYXRpb25fbmFtZRgCIAEoCRINCgV2YWx1ZRgDIAEoDBIUCgdjb250ZXh0GAQgASgJSACIAQFCCgoIX2NvbnRleHQidAoiV3JpdGVJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKoACChJDcmVkZW50aWFsU3RyYXRlZ3kSIwofQ1JFREVOVElBTF9TVFJBVEVHWV9VTlNQRUNJRklFRBAAEh0KGUNSRURFTlRJQUxfU1RSQVRFR1lfT0FVVEgQARIfChtDUkVERU5USUFMX1NUUkFURUdZX0FQSV9LRVkQAhIlCiFDUkVERU5USUFMX1NUUkFURUdZX1NIQVJFRF9TRUNSRVQQAxIfChtDUkVERU5USUFMX1NUUkFURUdZX1NTSF9LRVkQBBIcChhDUkVERU5USUFMX1NUUkFURUdZX05PTkUQBRIfChtDUkVERU5USUFMX1NUUkFURUdZX01BTkFHRUQQBiqUAQoSU3Vic2NyaXB0aW9uSGVhbHRoEiMKH1NVQlNDUklQVElPTl9IRUFMVEhfVU5TUEVDSUZJRUQQABIaChZTVUJTQ1JJUFRJT05fSEVBTFRIX09LEAESHQoZU1VCU0NSSVBUSU9OX0hFQUxUSF9TVEFMRRACEh4KGlNVQlNDUklQVElPTl9IRUFMVEhfQlJPS0VOEAMqbwoKQXV0aFN0YXR1cxIbChdBVVRIX1NUQVRVU19VTlNQRUNJRklFRBAAEhIKDkFVVEhfU1RBVFVTX09LEAESFwoTQVVUSF9TVEFUVVNfRVhQSVJFRBACEhcKE0FVVEhfU1RBVFVTX1JFVk9LRUQQAypxCg9FeHRlbnNpb25UYXJnZXQSIAocRVhURU5TSU9OX1RBUkdFVF9VTlNQRUNJRklFRBAAEhsKF0VYVEVOU0lPTl9UQVJHRVRfUkVDT1JEEAESHwobRVhURU5TSU9OX1RBUkdFVF9NT0RFTF9MSVNUEAIyqAIKHUludGVncmF0aW9uQ3JlZGVudGlhbHNTZXJ2aWNlEn8KGEdldEludGVncmF0aW9uQ3JlZGVudGlhbBIwLmludGVncmF0aW9ucy52MS5HZXRJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXF1ZXN0GjEuaW50ZWdyYXRpb25zLnYxLkdldEludGVncmF0aW9uQ3JlZGVudGlhbFJlc3BvbnNlEoUBChpXcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbBIyLmludGVncmF0aW9ucy52MS5Xcml0ZUludGVncmF0aW9uQ3JlZGVudGlhbFJlcXVlc3QaMy5pbnRlZ3JhdGlvbnMudjEuV3JpdGVJbnRlZ3JhdGlvbkNyZWRlbnRpYWxSZXNwb25zZUJFWkNnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vaW50ZWdyYXRpb25zL3YxO2ludGVncmF0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
+
14
+ /**
15
+ * Describes the message integrations.v1.IntegrationMiddleware.
16
+ * Use `create(IntegrationMiddlewareSchema)` to create a new message.
17
+ */
18
+ export const IntegrationMiddlewareSchema = /*@__PURE__*/
19
+ messageDesc(file_integrations_v1_integrations, 0);
20
+
21
+ /**
22
+ * Describes the message integrations.v1.IntegrationCredentials.
23
+ * Use `create(IntegrationCredentialsSchema)` to create a new message.
24
+ */
25
+ export const IntegrationCredentialsSchema = /*@__PURE__*/
26
+ messageDesc(file_integrations_v1_integrations, 1);
27
+
28
+ /**
29
+ * Describes the message integrations.v1.ModelSeedField.
30
+ * Use `create(ModelSeedFieldSchema)` to create a new message.
31
+ */
32
+ export const ModelSeedFieldSchema = /*@__PURE__*/
33
+ messageDesc(file_integrations_v1_integrations, 2);
34
+
35
+ /**
36
+ * Describes the message integrations.v1.ModelSeed.
37
+ * Use `create(ModelSeedSchema)` to create a new message.
38
+ */
39
+ export const ModelSeedSchema = /*@__PURE__*/
40
+ messageDesc(file_integrations_v1_integrations, 3);
41
+
42
+ /**
43
+ * Describes the message integrations.v1.IntegrationSyncMapping.
44
+ * Use `create(IntegrationSyncMappingSchema)` to create a new message.
45
+ */
46
+ export const IntegrationSyncMappingSchema = /*@__PURE__*/
47
+ messageDesc(file_integrations_v1_integrations, 4);
48
+
49
+ /**
50
+ * Describes the message integrations.v1.IntegrationStatus.
51
+ * Use `create(IntegrationStatusSchema)` to create a new message.
52
+ */
53
+ export const IntegrationStatusSchema = /*@__PURE__*/
54
+ messageDesc(file_integrations_v1_integrations, 5);
55
+
56
+ /**
57
+ * Describes the message integrations.v1.IntegrationConfig.
58
+ * Use `create(IntegrationConfigSchema)` to create a new message.
59
+ */
60
+ export const IntegrationConfigSchema = /*@__PURE__*/
61
+ messageDesc(file_integrations_v1_integrations, 6);
62
+
63
+ /**
64
+ * Describes the message integrations.v1.ExtensionPlacement.
65
+ * Use `create(ExtensionPlacementSchema)` to create a new message.
66
+ */
67
+ export const ExtensionPlacementSchema = /*@__PURE__*/
68
+ messageDesc(file_integrations_v1_integrations, 7);
69
+
70
+ /**
71
+ * Describes the message integrations.v1.ExtensionConfig.
72
+ * Use `create(ExtensionConfigSchema)` to create a new message.
73
+ */
74
+ export const ExtensionConfigSchema = /*@__PURE__*/
75
+ messageDesc(file_integrations_v1_integrations, 8);
76
+
77
+ /**
78
+ * Describes the message integrations.v1.IntegrationCredentialValue.
79
+ * Use `create(IntegrationCredentialValueSchema)` to create a new message.
80
+ */
81
+ export const IntegrationCredentialValueSchema = /*@__PURE__*/
82
+ messageDesc(file_integrations_v1_integrations, 9);
83
+
84
+ /**
85
+ * Describes the message integrations.v1.GetIntegrationCredentialRequest.
86
+ * Use `create(GetIntegrationCredentialRequestSchema)` to create a new message.
87
+ */
88
+ export const GetIntegrationCredentialRequestSchema = /*@__PURE__*/
89
+ messageDesc(file_integrations_v1_integrations, 10);
90
+
91
+ /**
92
+ * Describes the message integrations.v1.GetIntegrationCredentialResponse.
93
+ * Use `create(GetIntegrationCredentialResponseSchema)` to create a new message.
94
+ */
95
+ export const GetIntegrationCredentialResponseSchema = /*@__PURE__*/
96
+ messageDesc(file_integrations_v1_integrations, 11);
97
+
98
+ /**
99
+ * Describes the message integrations.v1.WriteIntegrationCredentialRequest.
100
+ * Use `create(WriteIntegrationCredentialRequestSchema)` to create a new message.
101
+ */
102
+ export const WriteIntegrationCredentialRequestSchema = /*@__PURE__*/
103
+ messageDesc(file_integrations_v1_integrations, 12);
104
+
105
+ /**
106
+ * Describes the message integrations.v1.WriteIntegrationCredentialResponse.
107
+ * Use `create(WriteIntegrationCredentialResponseSchema)` to create a new message.
108
+ */
109
+ export const WriteIntegrationCredentialResponseSchema = /*@__PURE__*/
110
+ messageDesc(file_integrations_v1_integrations, 13);
111
+
112
+ /**
113
+ * Describes the enum integrations.v1.CredentialStrategy.
114
+ */
115
+ export const CredentialStrategySchema = /*@__PURE__*/
116
+ enumDesc(file_integrations_v1_integrations, 0);
117
+
118
+ /**
119
+ * Credential strategies the middleware uses when talking to the external
120
+ * service. Drives which authorization flow the admin UI renders.
121
+ *
122
+ * @generated from enum integrations.v1.CredentialStrategy
123
+ */
124
+ export const CredentialStrategy = /*@__PURE__*/
125
+ tsEnum(CredentialStrategySchema);
126
+
127
+ /**
128
+ * Describes the enum integrations.v1.SubscriptionHealth.
129
+ */
130
+ export const SubscriptionHealthSchema = /*@__PURE__*/
131
+ enumDesc(file_integrations_v1_integrations, 1);
132
+
133
+ /**
134
+ * Subscription health reported by the middleware for the external-service
135
+ * webhook subscription this integration depends on.
136
+ *
137
+ * @generated from enum integrations.v1.SubscriptionHealth
138
+ */
139
+ export const SubscriptionHealth = /*@__PURE__*/
140
+ tsEnum(SubscriptionHealthSchema);
141
+
142
+ /**
143
+ * Describes the enum integrations.v1.AuthStatus.
144
+ */
145
+ export const AuthStatusSchema = /*@__PURE__*/
146
+ enumDesc(file_integrations_v1_integrations, 2);
147
+
148
+ /**
149
+ * Auth status reported by the middleware for the external-service credentials.
150
+ *
151
+ * @generated from enum integrations.v1.AuthStatus
152
+ */
153
+ export const AuthStatus = /*@__PURE__*/
154
+ tsEnum(AuthStatusSchema);
155
+
156
+ /**
157
+ * Describes the enum integrations.v1.ExtensionTarget.
158
+ */
159
+ export const ExtensionTargetSchema = /*@__PURE__*/
160
+ enumDesc(file_integrations_v1_integrations, 3);
161
+
162
+ /**
163
+ * @generated from enum integrations.v1.ExtensionTarget
164
+ */
165
+ export const ExtensionTarget = /*@__PURE__*/
166
+ tsEnum(ExtensionTargetSchema);
167
+
168
+ /**
169
+ * @generated from service integrations.v1.IntegrationCredentialsService
170
+ */
171
+ export const IntegrationCredentialsService = /*@__PURE__*/
172
+ serviceDesc(file_integrations_v1_integrations, 0);
173
+
@@ -1427,6 +1427,11 @@ export declare type QuotaRuleUsage = Message<"operations.v1.QuotaRuleUsage"> & {
1427
1427
  * @generated from field: int32 duration = 8;
1428
1428
  */
1429
1429
  duration: number;
1430
+
1431
+ /**
1432
+ * @generated from field: string message = 9;
1433
+ */
1434
+ message: string;
1430
1435
  };
1431
1436
 
1432
1437
  /**
@@ -9,7 +9,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
9
9
  * Describes the file operations/v1/operations.proto.
10
10
  */
11
11
  export const file_operations_v1_operations = /*@__PURE__*/
12
- fileDesc("Ch5vcGVyYXRpb25zL3YxL29wZXJhdGlvbnMucHJvdG8SDW9wZXJhdGlvbnMudjEiygcKCU9wZXJhdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKBGljb24YBSABKAlIAYgBARIVCghjYXRlZ29yeRgGIAEoCUgCiAEBEhAKCGVuZHBvaW50GAcgASgJEhoKDWVuZHBvaW50X2F1dGgYCCABKAlIA4gBARISCgp0aW1lb3V0X21zGAkgASgFEjIKDHJldHJ5X3BvbGljeRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCgxpbnB1dF9zY2hlbWEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIRCglpc19hY3RpdmUYDiABKAgSFQoNYWxsb3dlZF9yb2xlcxgPIAMoCRIzCg1zdHJlYW1fY29uZmlnGBAgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgIiAEBEiwKBnF1b3RhcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIWCgljb25maWdfaWQYEiABKAlICogBARIyCgxwcmVjb25kaXRpb24YEyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAuIAQESEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlIDIgBARIXCgpjcmVhdGVkX2J5GB4gASgJSA2IAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEIPCg1fcmV0cnlfcG9saWN5Qg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDAoKX2NvbmZpZ19pZEIPCg1fcHJlY29uZGl0aW9uQg0KC19wcm9qZWN0X2lkQg0KC19jcmVhdGVkX2J5Iv0EChJPcGVyYXRpb25FeGVjdXRpb24SCgoCaWQYASABKAkSFQoNb3BlcmF0aW9uX2tleRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGQoMdHJpZ2dlcl90eXBlGAQgASgJSACIAQESNQoPdHJpZ2dlcl9jb250ZXh0GAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEisKBWlucHV0GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhgKC3Jlc3VsdF9qc29uGAcgASgMSAOIAQESFwoKZXJyb3JfanNvbhgIIAEoDEgEiAEBEjMKCnN0YXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESNQoMY29tcGxldGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhgKC2R1cmF0aW9uX21zGAsgASgFSAeIAQESEwoLcmV0cnlfY291bnQYDCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fdHJpZ2dlcl90eXBlQhIKEF90cmlnZ2VyX2NvbnRleHRCCAoGX2lucHV0Qg4KDF9yZXN1bHRfanNvbkINCgtfZXJyb3JfanNvbkINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0Qg4KDF9kdXJhdGlvbl9tc0INCgtfcHJvamVjdF9pZCLfBAoPRGVhZExldHRlckVudHJ5EgoKAmlkGAEgASgJEhUKDW9wZXJhdGlvbl9rZXkYAiABKAkSGQoMZXhlY3V0aW9uX2lkGAMgASgJSACIAQESKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESGQoMdHJpZ2dlcl90eXBlGAUgASgJSAKIAQESEAoIYXR0ZW1wdHMYBiABKAUSEgoKbGFzdF9lcnJvchgHIAEoCRIXCgplcnJvcl9jb2RlGAggASgJSAOIAQESDgoGc3RhdHVzGAkgASgJEi0KCWZhaWxlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV0cmllZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI1CgxkaXNtaXNzZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGQoMZGlzbWlzc2VkX2J5GA0gASgJSAaIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX2V4ZWN1dGlvbl9pZEIICgZfaW5wdXRCDwoNX3RyaWdnZXJfdHlwZUINCgtfZXJyb3JfY29kZUINCgtfcmV0cmllZF9hdEIPCg1fZGlzbWlzc2VkX2F0Qg8KDV9kaXNtaXNzZWRfYnkitQIKDENpcmN1aXRTdGF0ZRIVCg1vcGVyYXRpb25fa2V5GAEgASgJEhAKCGVuZHBvaW50GAIgASgJEg0KBXN0YXRlGAMgASgJEhUKDWZhaWx1cmVfY291bnQYBCABKAUSOAoPbGFzdF9mYWlsdXJlX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjIKCW9wZW5lZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1CgxoYWxmX29wZW5fYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEgoQX2xhc3RfZmFpbHVyZV9hdEIMCgpfb3BlbmVkX2F0Qg8KDV9oYWxmX29wZW5fYXQigQEKDkV4ZWN1dGlvblN0YXRzEhUKDW9wZXJhdGlvbl9rZXkYASABKAkSDQoFdG90YWwYAiABKAUSDwoHc3VjY2VzcxgDIAEoBRIOCgZmYWlsZWQYBCABKAUSDwoHcGVuZGluZxgFIAEoBRIXCg9hdmdfZHVyYXRpb25fbXMYBiABKAEiVQoPRGVhZExldHRlclN0YXRzEg8KB3BlbmRpbmcYASABKAUSDwoHcmV0cmllZBgCIAEoBRIRCglkaXNtaXNzZWQYAyABKAUSDQoFdG90YWwYBCABKAUixgEKFUxpc3RPcGVyYXRpb25zUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgCIAEoCEgBiAEBEhMKBnNlYXJjaBgDIAEoCUgCiAEBEhYKCWNvbmZpZ19pZBgEIAEoCUgDiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUILCglfY2F0ZWdvcnlCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoQgwKCl9jb25maWdfaWQiVQoWTGlzdE9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24SDQoFdG90YWwYAiABKAUiOwoTR2V0T3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIQCgNrZXkYAiABKAlIAIgBAUIGCgRfa2V5IkMKFEdldE9wZXJhdGlvblJlc3BvbnNlEisKCW9wZXJhdGlvbhgBIAEoCzIYLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uIq8GChZDcmVhdGVPcGVyYXRpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESEAoIZW5kcG9pbnQYBiABKAkSGgoNZW5kcG9pbnRfYXV0aBgHIAEoCUgDiAEBEhcKCnRpbWVvdXRfbXMYCCABKAVIBIgBARIyCgxpbnB1dF9zY2hlbWEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIWCgljb25maWdfaWQYDCABKAlICIgBARIzCg1zdHJlYW1fY29uZmlnGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgJiAEBEiwKBnF1b3RhcxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIVCg1hbGxvd2VkX3JvbGVzGA8gAygJEjIKDHJldHJ5X3BvbGljeRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFgoJaXNfYWN0aXZlGBIgASgISA2IAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEINCgtfdGltZW91dF9tc0IPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQgUKA191aUIMCgpfY29uZmlnX2lkQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDwoNX3JldHJ5X3BvbGljeUIPCg1fcHJlY29uZGl0aW9uQgwKCl9pc19hY3RpdmUiRgoXQ3JlYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24i6AUKFlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFQoIZW5kcG9pbnQYBCABKAlIAogBARIaCg1lbmRwb2ludF9hdXRoGAUgASgJSAOIAQESFwoKdGltZW91dF9tcxgGIAEoBUgEiAEBEjIKDGlucHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIzCg1vdXRwdXRfc2NoZW1hGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEigKAnVpGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhYKCWlzX2FjdGl2ZRgKIAEoCEgIiAEBEjMKDXN0cmVhbV9jb25maWcYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESLAoGcXVvdGFzGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgKiAEBEjIKDHJldHJ5X3BvbGljeRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YDiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFQoNYWxsb3dlZF9yb2xlcxgPIAMoCUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2VuZHBvaW50QhAKDl9lbmRwb2ludF9hdXRoQg0KC190aW1lb3V0X21zQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQgwKCl9pc19hY3RpdmVCEAoOX3N0cmVhbV9jb25maWdCCQoHX3F1b3Rhc0IPCg1fcmV0cnlfcG9saWN5Qg8KDV9wcmVjb25kaXRpb24iRgoXVXBkYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iJAoWRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIqChdEZWxldGVPcGVyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqgDChdFeGVjdXRlT3BlcmF0aW9uUmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJEisKBWlucHV0GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDHRyaWdnZXJfdHlwZRgDIAEoCUgBiAEBEjUKD3RyaWdnZXJfY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIqCgRtb2RlGAUgASgOMhwub3BlcmF0aW9ucy52MS5FeGVjdXRpb25Nb2RlEhgKC2N1c3RvbWVyX2lkGAYgASgJSAOIAQESLAoGcmVjb3JkGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KB2NvbnRlbnQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQFCCAoGX2lucHV0Qg8KDV90cmlnZ2VyX3R5cGVCEgoQX3RyaWdnZXJfY29udGV4dEIOCgxfY3VzdG9tZXJfaWRCCQoHX3JlY29yZEIKCghfY29udGVudCKpAgoYRXhlY3V0ZU9wZXJhdGlvblJlc3BvbnNlEjQKCWV4ZWN1dGlvbhgBIAEoCzIhLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uRXhlY3V0aW9uEhgKC3Jlc3VsdF9qc29uGAIgASgMSACIAQESGgoNZXJyb3JfbWVzc2FnZRgDIAEoCUgBiAEBEhEKCWNvbXBsZXRlZBgEIAEoCBIVCghwb2xsX3VybBgKIAEoCUgCiAEBEhcKCmNhbmNlbF91cmwYCyABKAlIA4gBARIUCgdtZXNzYWdlGAwgASgJSASIAQFCDgoMX3Jlc3VsdF9qc29uQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9wb2xsX3VybEINCgtfY2FuY2VsX3VybEIKCghfbWVzc2FnZSJ2Ch5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1JlcXVlc3QSFQoNb3BlcmF0aW9uX2tleRgBIAEoCRITCgZzdGF0dXMYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJnCh9MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEjUKCmV4ZWN1dGlvbnMYASADKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbhINCgV0b3RhbBgCIAEoBSJRCiFHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1JlcXVlc3QSGgoNb3BlcmF0aW9uX2tleRgBIAEoCUgAiAEBQhAKDl9vcGVyYXRpb25fa2V5IlIKIkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVzcG9uc2USLAoFc3RhdHMYASADKAsyHS5vcGVyYXRpb25zLnYxLkV4ZWN1dGlvblN0YXRzIosBChxMaXN0RGVhZExldHRlckVudHJpZXNSZXF1ZXN0EhoKDW9wZXJhdGlvbl9rZXkYASABKAlIAIgBARITCgZzdGF0dXMYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCEAoOX29wZXJhdGlvbl9rZXlCCQoHX3N0YXR1cyJfCh1MaXN0RGVhZExldHRlckVudHJpZXNSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyRW50cnkSDQoFdG90YWwYAiABKAUiKQobUmV0cnlEZWFkTGV0dGVyRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHFJldHJ5RGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIrCh1EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIbChlHZXREZWFkTGV0dGVyU3RhdHNSZXF1ZXN0IksKGkdldERlYWRMZXR0ZXJTdGF0c1Jlc3BvbnNlEi0KBXN0YXRzGAEgASgLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyU3RhdHMiGgoYTGlzdENpcmN1aXRTdGF0ZXNSZXF1ZXN0IkgKGUxpc3RDaXJjdWl0U3RhdGVzUmVzcG9uc2USKwoGc3RhdGVzGAEgAygLMhsub3BlcmF0aW9ucy52MS5DaXJjdWl0U3RhdGUiLAoTUmVzZXRDaXJjdWl0UmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJIicKFFJlc2V0Q2lyY3VpdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGQoXR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QiOgoYR2V0U2lnbmluZ1NlY3JldFJlc3BvbnNlEg4KBnNlY3JldBgBIAEoCRIOCgZwcmVmaXgYAiABKAkiIAoeUmVnZW5lcmF0ZVNpZ25pbmdTZWNyZXRSZXF1ZXN0IjEKH1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2USDgoGc2VjcmV0GAEgASgJIkIKHkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDQoFbGltaXQYCiABKAUiTwofR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iKgocR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCh1HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRI0CglleGVjdXRpb24YASABKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbiItCh9DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIENhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiggEKHUdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0EhUKDW9wZXJhdGlvbl9rZXkYASABKAkSGAoLY3VzdG9tZXJfaWQYAiABKAlIAIgBARIUCgd1c2VyX2lkGAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQgoKCF91c2VyX2lkIqEBCg5RdW90YVJ1bGVVc2FnZRISCgpydWxlX2luZGV4GAEgASgFEhMKC3NlZ21lbnRfa2V5GAIgASgJEg0KBWxpbWl0GAMgASgFEgwKBHVzZWQYBCABKAUSEQoJcmVtYWluaW5nGAUgASgFEhUKDXJlc2V0X2F0X3VuaXgYBiABKAMSDQoFc2NvcGUYByABKAkSEAoIZHVyYXRpb24YCCABKAUirQEKHkdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXNwb25zZRIYChB0b3RhbF9leGVjdXRpb25zGAEgASgDEhkKEXBlcmlvZF9leGVjdXRpb25zGAIgASgDEhgKC3F1b3RhX2xpbWl0GAMgASgDSACIAQESLAoFcnVsZXMYBCADKAsyHS5vcGVyYXRpb25zLnYxLlF1b3RhUnVsZVVzYWdlQg4KDF9xdW90YV9saW1pdCIcChpHZXRTaWduaW5nU2VjcmV0UmF3UmVxdWVzdCItChtHZXRTaWduaW5nU2VjcmV0UmF3UmVzcG9uc2USDgoGc2VjcmV0GAEgASgJKmIKDUV4ZWN1dGlvbk1vZGUSHgoaRVhFQ1VUSU9OX01PREVfVU5TUEVDSUZJRUQQABIXChNFWEVDVVRJT05fTU9ERV9TWU5DEAESGAoURVhFQ1VUSU9OX01PREVfQVNZTkMQAjKLEgoRT3BlcmF0aW9uc1NlcnZpY2USXQoOTGlzdE9wZXJhdGlvbnMSJC5vcGVyYXRpb25zLnYxLkxpc3RPcGVyYXRpb25zUmVxdWVzdBolLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbnNSZXNwb25zZRJXCgxHZXRPcGVyYXRpb24SIi5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvblJlcXVlc3QaIy5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvblJlc3BvbnNlEmAKD0NyZWF0ZU9wZXJhdGlvbhIlLm9wZXJhdGlvbnMudjEuQ3JlYXRlT3BlcmF0aW9uUmVxdWVzdBomLm9wZXJhdGlvbnMudjEuQ3JlYXRlT3BlcmF0aW9uUmVzcG9uc2USYAoPVXBkYXRlT3BlcmF0aW9uEiUub3BlcmF0aW9ucy52MS5VcGRhdGVPcGVyYXRpb25SZXF1ZXN0GiYub3BlcmF0aW9ucy52MS5VcGRhdGVPcGVyYXRpb25SZXNwb25zZRJgCg9EZWxldGVPcGVyYXRpb24SJS5vcGVyYXRpb25zLnYxLkRlbGV0ZU9wZXJhdGlvblJlcXVlc3QaJi5vcGVyYXRpb25zLnYxLkRlbGV0ZU9wZXJhdGlvblJlc3BvbnNlEmMKEEV4ZWN1dGVPcGVyYXRpb24SJi5vcGVyYXRpb25zLnYxLkV4ZWN1dGVPcGVyYXRpb25SZXF1ZXN0Gicub3BlcmF0aW9ucy52MS5FeGVjdXRlT3BlcmF0aW9uUmVzcG9uc2USeAoXTGlzdE9wZXJhdGlvbkV4ZWN1dGlvbnMSLS5vcGVyYXRpb25zLnYxLkxpc3RPcGVyYXRpb25FeGVjdXRpb25zUmVxdWVzdBouLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbkV4ZWN1dGlvbnNSZXNwb25zZRKBAQoaR2V0T3BlcmF0aW9uRXhlY3V0aW9uU3RhdHMSMC5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVxdWVzdBoxLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uRXhlY3V0aW9uU3RhdHNSZXNwb25zZRJyChVMaXN0RGVhZExldHRlckVudHJpZXMSKy5vcGVyYXRpb25zLnYxLkxpc3REZWFkTGV0dGVyRW50cmllc1JlcXVlc3QaLC5vcGVyYXRpb25zLnYxLkxpc3REZWFkTGV0dGVyRW50cmllc1Jlc3BvbnNlEm8KFFJldHJ5RGVhZExldHRlckVudHJ5Eioub3BlcmF0aW9ucy52MS5SZXRyeURlYWRMZXR0ZXJFbnRyeVJlcXVlc3QaKy5vcGVyYXRpb25zLnYxLlJldHJ5RGVhZExldHRlckVudHJ5UmVzcG9uc2USdQoWRGlzbWlzc0RlYWRMZXR0ZXJFbnRyeRIsLm9wZXJhdGlvbnMudjEuRGlzbWlzc0RlYWRMZXR0ZXJFbnRyeVJlcXVlc3QaLS5vcGVyYXRpb25zLnYxLkRpc21pc3NEZWFkTGV0dGVyRW50cnlSZXNwb25zZRJpChJHZXREZWFkTGV0dGVyU3RhdHMSKC5vcGVyYXRpb25zLnYxLkdldERlYWRMZXR0ZXJTdGF0c1JlcXVlc3QaKS5vcGVyYXRpb25zLnYxLkdldERlYWRMZXR0ZXJTdGF0c1Jlc3BvbnNlEmYKEUxpc3RDaXJjdWl0U3RhdGVzEicub3BlcmF0aW9ucy52MS5MaXN0Q2lyY3VpdFN0YXRlc1JlcXVlc3QaKC5vcGVyYXRpb25zLnYxLkxpc3RDaXJjdWl0U3RhdGVzUmVzcG9uc2USVwoMUmVzZXRDaXJjdWl0EiIub3BlcmF0aW9ucy52MS5SZXNldENpcmN1aXRSZXF1ZXN0GiMub3BlcmF0aW9ucy52MS5SZXNldENpcmN1aXRSZXNwb25zZRJ4ChdHZXRBcHBsaWNhYmxlT3BlcmF0aW9ucxItLm9wZXJhdGlvbnMudjEuR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXF1ZXN0Gi4ub3BlcmF0aW9ucy52MS5HZXRBcHBsaWNhYmxlT3BlcmF0aW9uc1Jlc3BvbnNlEnIKFUdldE9wZXJhdGlvbkV4ZWN1dGlvbhIrLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBosLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVzcG9uc2USewoYQ2FuY2VsT3BlcmF0aW9uRXhlY3V0aW9uEi4ub3BlcmF0aW9ucy52MS5DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0Gi8ub3BlcmF0aW9ucy52MS5DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRJ1ChZHZXRPcGVyYXRpb25RdW90YVVzYWdlEiwub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25RdW90YVVzYWdlUmVxdWVzdBotLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uUXVvdGFVc2FnZVJlc3BvbnNlEmMKEEdldFNpZ25pbmdTZWNyZXQSJi5vcGVyYXRpb25zLnYxLkdldFNpZ25pbmdTZWNyZXRSZXF1ZXN0Gicub3BlcmF0aW9ucy52MS5HZXRTaWduaW5nU2VjcmV0UmVzcG9uc2USbAoTR2V0U2lnbmluZ1NlY3JldFJhdxIpLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJhd1JlcXVlc3QaKi5vcGVyYXRpb25zLnYxLkdldFNpZ25pbmdTZWNyZXRSYXdSZXNwb25zZRJ4ChdSZWdlbmVyYXRlU2lnbmluZ1NlY3JldBItLm9wZXJhdGlvbnMudjEuUmVnZW5lcmF0ZVNpZ25pbmdTZWNyZXRSZXF1ZXN0Gi4ub3BlcmF0aW9ucy52MS5SZWdlbmVyYXRlU2lnbmluZ1NlY3JldFJlc3BvbnNlQkFaP2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9vcGVyYXRpb25zL3YxO29wZXJhdGlvbnN2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
12
+ fileDesc("Ch5vcGVyYXRpb25zL3YxL29wZXJhdGlvbnMucHJvdG8SDW9wZXJhdGlvbnMudjEiygcKCU9wZXJhdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhEKBGljb24YBSABKAlIAYgBARIVCghjYXRlZ29yeRgGIAEoCUgCiAEBEhAKCGVuZHBvaW50GAcgASgJEhoKDWVuZHBvaW50X2F1dGgYCCABKAlIA4gBARISCgp0aW1lb3V0X21zGAkgASgFEjIKDHJldHJ5X3BvbGljeRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCgxpbnB1dF9zY2hlbWEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIRCglpc19hY3RpdmUYDiABKAgSFQoNYWxsb3dlZF9yb2xlcxgPIAMoCRIzCg1zdHJlYW1fY29uZmlnGBAgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgIiAEBEiwKBnF1b3RhcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICYgBARIWCgljb25maWdfaWQYEiABKAlICogBARIyCgxwcmVjb25kaXRpb24YEyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAuIAQESEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlIDIgBARIXCgpjcmVhdGVkX2J5GB4gASgJSA2IAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEIPCg1fcmV0cnlfcG9saWN5Qg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDAoKX2NvbmZpZ19pZEIPCg1fcHJlY29uZGl0aW9uQg0KC19wcm9qZWN0X2lkQg0KC19jcmVhdGVkX2J5Iv0EChJPcGVyYXRpb25FeGVjdXRpb24SCgoCaWQYASABKAkSFQoNb3BlcmF0aW9uX2tleRgCIAEoCRIOCgZzdGF0dXMYAyABKAkSGQoMdHJpZ2dlcl90eXBlGAQgASgJSACIAQESNQoPdHJpZ2dlcl9jb250ZXh0GAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEisKBWlucHV0GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhgKC3Jlc3VsdF9qc29uGAcgASgMSAOIAQESFwoKZXJyb3JfanNvbhgIIAEoDEgEiAEBEjMKCnN0YXJ0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESNQoMY29tcGxldGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhgKC2R1cmF0aW9uX21zGAsgASgFSAeIAQESEwoLcmV0cnlfY291bnQYDCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhcKCnByb2plY3RfaWQYFSABKAlICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fdHJpZ2dlcl90eXBlQhIKEF90cmlnZ2VyX2NvbnRleHRCCAoGX2lucHV0Qg4KDF9yZXN1bHRfanNvbkINCgtfZXJyb3JfanNvbkINCgtfc3RhcnRlZF9hdEIPCg1fY29tcGxldGVkX2F0Qg4KDF9kdXJhdGlvbl9tc0INCgtfcHJvamVjdF9pZCLfBAoPRGVhZExldHRlckVudHJ5EgoKAmlkGAEgASgJEhUKDW9wZXJhdGlvbl9rZXkYAiABKAkSGQoMZXhlY3V0aW9uX2lkGAMgASgJSACIAQESKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESGQoMdHJpZ2dlcl90eXBlGAUgASgJSAKIAQESEAoIYXR0ZW1wdHMYBiABKAUSEgoKbGFzdF9lcnJvchgHIAEoCRIXCgplcnJvcl9jb2RlGAggASgJSAOIAQESDgoGc3RhdHVzGAkgASgJEi0KCWZhaWxlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV0cmllZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI1CgxkaXNtaXNzZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGQoMZGlzbWlzc2VkX2J5GA0gASgJSAaIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDwoNX2V4ZWN1dGlvbl9pZEIICgZfaW5wdXRCDwoNX3RyaWdnZXJfdHlwZUINCgtfZXJyb3JfY29kZUINCgtfcmV0cmllZF9hdEIPCg1fZGlzbWlzc2VkX2F0Qg8KDV9kaXNtaXNzZWRfYnkitQIKDENpcmN1aXRTdGF0ZRIVCg1vcGVyYXRpb25fa2V5GAEgASgJEhAKCGVuZHBvaW50GAIgASgJEg0KBXN0YXRlGAMgASgJEhUKDWZhaWx1cmVfY291bnQYBCABKAUSOAoPbGFzdF9mYWlsdXJlX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjIKCW9wZW5lZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1CgxoYWxmX29wZW5fYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCEgoQX2xhc3RfZmFpbHVyZV9hdEIMCgpfb3BlbmVkX2F0Qg8KDV9oYWxmX29wZW5fYXQigQEKDkV4ZWN1dGlvblN0YXRzEhUKDW9wZXJhdGlvbl9rZXkYASABKAkSDQoFdG90YWwYAiABKAUSDwoHc3VjY2VzcxgDIAEoBRIOCgZmYWlsZWQYBCABKAUSDwoHcGVuZGluZxgFIAEoBRIXCg9hdmdfZHVyYXRpb25fbXMYBiABKAEiVQoPRGVhZExldHRlclN0YXRzEg8KB3BlbmRpbmcYASABKAUSDwoHcmV0cmllZBgCIAEoBRIRCglkaXNtaXNzZWQYAyABKAUSDQoFdG90YWwYBCABKAUixgEKFUxpc3RPcGVyYXRpb25zUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgCIAEoCEgBiAEBEhMKBnNlYXJjaBgDIAEoCUgCiAEBEhYKCWNvbmZpZ19pZBgEIAEoCUgDiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUILCglfY2F0ZWdvcnlCDAoKX2lzX2FjdGl2ZUIJCgdfc2VhcmNoQgwKCl9jb25maWdfaWQiVQoWTGlzdE9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24SDQoFdG90YWwYAiABKAUiOwoTR2V0T3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIQCgNrZXkYAiABKAlIAIgBAUIGCgRfa2V5IkMKFEdldE9wZXJhdGlvblJlc3BvbnNlEisKCW9wZXJhdGlvbhgBIAEoCzIYLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uIq8GChZDcmVhdGVPcGVyYXRpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEQoEaWNvbhgEIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESEAoIZW5kcG9pbnQYBiABKAkSGgoNZW5kcG9pbnRfYXV0aBgHIAEoCUgDiAEBEhcKCnRpbWVvdXRfbXMYCCABKAVIBIgBARIyCgxpbnB1dF9zY2hlbWEYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQESMwoNb3V0cHV0X3NjaGVtYRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIoCgJ1aRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIWCgljb25maWdfaWQYDCABKAlICIgBARIzCg1zdHJlYW1fY29uZmlnGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgJiAEBEiwKBnF1b3RhcxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICogBARIVCg1hbGxvd2VkX3JvbGVzGA8gAygJEjIKDHJldHJ5X3BvbGljeRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFgoJaXNfYWN0aXZlGBIgASgISA2IAQFCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUIQCg5fZW5kcG9pbnRfYXV0aEINCgtfdGltZW91dF9tc0IPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQgUKA191aUIMCgpfY29uZmlnX2lkQhAKDl9zdHJlYW1fY29uZmlnQgkKB19xdW90YXNCDwoNX3JldHJ5X3BvbGljeUIPCg1fcHJlY29uZGl0aW9uQgwKCl9pc19hY3RpdmUiRgoXQ3JlYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24i6AUKFlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESFQoIZW5kcG9pbnQYBCABKAlIAogBARIaCg1lbmRwb2ludF9hdXRoGAUgASgJSAOIAQESFwoKdGltZW91dF9tcxgGIAEoBUgEiAEBEjIKDGlucHV0X3NjaGVtYRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIzCg1vdXRwdXRfc2NoZW1hGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEigKAnVpGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhYKCWlzX2FjdGl2ZRgKIAEoCEgIiAEBEjMKDXN0cmVhbV9jb25maWcYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESLAoGcXVvdGFzGAwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgKiAEBEjIKDHJldHJ5X3BvbGljeRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIC4gBARIyCgxwcmVjb25kaXRpb24YDiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAyIAQESFQoNYWxsb3dlZF9yb2xlcxgPIAMoCUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2VuZHBvaW50QhAKDl9lbmRwb2ludF9hdXRoQg0KC190aW1lb3V0X21zQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCBQoDX3VpQgwKCl9pc19hY3RpdmVCEAoOX3N0cmVhbV9jb25maWdCCQoHX3F1b3Rhc0IPCg1fcmV0cnlfcG9saWN5Qg8KDV9wcmVjb25kaXRpb24iRgoXVXBkYXRlT3BlcmF0aW9uUmVzcG9uc2USKwoJb3BlcmF0aW9uGAEgASgLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iJAoWRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIqChdEZWxldGVPcGVyYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqgDChdFeGVjdXRlT3BlcmF0aW9uUmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJEisKBWlucHV0GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDHRyaWdnZXJfdHlwZRgDIAEoCUgBiAEBEjUKD3RyaWdnZXJfY29udGV4dBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIqCgRtb2RlGAUgASgOMhwub3BlcmF0aW9ucy52MS5FeGVjdXRpb25Nb2RlEhgKC2N1c3RvbWVyX2lkGAYgASgJSAOIAQESLAoGcmVjb3JkGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEi0KB2NvbnRlbnQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAWIAQFCCAoGX2lucHV0Qg8KDV90cmlnZ2VyX3R5cGVCEgoQX3RyaWdnZXJfY29udGV4dEIOCgxfY3VzdG9tZXJfaWRCCQoHX3JlY29yZEIKCghfY29udGVudCKpAgoYRXhlY3V0ZU9wZXJhdGlvblJlc3BvbnNlEjQKCWV4ZWN1dGlvbhgBIAEoCzIhLm9wZXJhdGlvbnMudjEuT3BlcmF0aW9uRXhlY3V0aW9uEhgKC3Jlc3VsdF9qc29uGAIgASgMSACIAQESGgoNZXJyb3JfbWVzc2FnZRgDIAEoCUgBiAEBEhEKCWNvbXBsZXRlZBgEIAEoCBIVCghwb2xsX3VybBgKIAEoCUgCiAEBEhcKCmNhbmNlbF91cmwYCyABKAlIA4gBARIUCgdtZXNzYWdlGAwgASgJSASIAQFCDgoMX3Jlc3VsdF9qc29uQhAKDl9lcnJvcl9tZXNzYWdlQgsKCV9wb2xsX3VybEINCgtfY2FuY2VsX3VybEIKCghfbWVzc2FnZSJ2Ch5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1JlcXVlc3QSFQoNb3BlcmF0aW9uX2tleRgBIAEoCRITCgZzdGF0dXMYAiABKAlIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCCQoHX3N0YXR1cyJnCh9MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEjUKCmV4ZWN1dGlvbnMYASADKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbhINCgV0b3RhbBgCIAEoBSJRCiFHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1JlcXVlc3QSGgoNb3BlcmF0aW9uX2tleRgBIAEoCUgAiAEBQhAKDl9vcGVyYXRpb25fa2V5IlIKIkdldE9wZXJhdGlvbkV4ZWN1dGlvblN0YXRzUmVzcG9uc2USLAoFc3RhdHMYASADKAsyHS5vcGVyYXRpb25zLnYxLkV4ZWN1dGlvblN0YXRzIosBChxMaXN0RGVhZExldHRlckVudHJpZXNSZXF1ZXN0EhoKDW9wZXJhdGlvbl9rZXkYASABKAlIAIgBARITCgZzdGF0dXMYAiABKAlIAYgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCEAoOX29wZXJhdGlvbl9rZXlCCQoHX3N0YXR1cyJfCh1MaXN0RGVhZExldHRlckVudHJpZXNSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyRW50cnkSDQoFdG90YWwYAiABKAUiKQobUmV0cnlEZWFkTGV0dGVyRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHFJldHJ5RGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIrCh1EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIbChlHZXREZWFkTGV0dGVyU3RhdHNSZXF1ZXN0IksKGkdldERlYWRMZXR0ZXJTdGF0c1Jlc3BvbnNlEi0KBXN0YXRzGAEgASgLMh4ub3BlcmF0aW9ucy52MS5EZWFkTGV0dGVyU3RhdHMiGgoYTGlzdENpcmN1aXRTdGF0ZXNSZXF1ZXN0IkgKGUxpc3RDaXJjdWl0U3RhdGVzUmVzcG9uc2USKwoGc3RhdGVzGAEgAygLMhsub3BlcmF0aW9ucy52MS5DaXJjdWl0U3RhdGUiLAoTUmVzZXRDaXJjdWl0UmVxdWVzdBIVCg1vcGVyYXRpb25fa2V5GAEgASgJIicKFFJlc2V0Q2lyY3VpdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiGQoXR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QiOgoYR2V0U2lnbmluZ1NlY3JldFJlc3BvbnNlEg4KBnNlY3JldBgBIAEoCRIOCgZwcmVmaXgYAiABKAkiIAoeUmVnZW5lcmF0ZVNpZ25pbmdTZWNyZXRSZXF1ZXN0IjEKH1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2USDgoGc2VjcmV0GAEgASgJIkIKHkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDQoFbGltaXQYCiABKAUiTwofR2V0QXBwbGljYWJsZU9wZXJhdGlvbnNSZXNwb25zZRIsCgpvcGVyYXRpb25zGAEgAygLMhgub3BlcmF0aW9ucy52MS5PcGVyYXRpb24iKgocR2V0T3BlcmF0aW9uRXhlY3V0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCh1HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRI0CglleGVjdXRpb24YASABKAsyIS5vcGVyYXRpb25zLnYxLk9wZXJhdGlvbkV4ZWN1dGlvbiItCh9DYW5jZWxPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIENhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiggEKHUdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0EhUKDW9wZXJhdGlvbl9rZXkYASABKAkSGAoLY3VzdG9tZXJfaWQYAiABKAlIAIgBARIUCgd1c2VyX2lkGAMgASgJSAGIAQFCDgoMX2N1c3RvbWVyX2lkQgoKCF91c2VyX2lkIrIBCg5RdW90YVJ1bGVVc2FnZRISCgpydWxlX2luZGV4GAEgASgFEhMKC3NlZ21lbnRfa2V5GAIgASgJEg0KBWxpbWl0GAMgASgFEgwKBHVzZWQYBCABKAUSEQoJcmVtYWluaW5nGAUgASgFEhUKDXJlc2V0X2F0X3VuaXgYBiABKAMSDQoFc2NvcGUYByABKAkSEAoIZHVyYXRpb24YCCABKAUSDwoHbWVzc2FnZRgJIAEoCSKtAQoeR2V0T3BlcmF0aW9uUXVvdGFVc2FnZVJlc3BvbnNlEhgKEHRvdGFsX2V4ZWN1dGlvbnMYASABKAMSGQoRcGVyaW9kX2V4ZWN1dGlvbnMYAiABKAMSGAoLcXVvdGFfbGltaXQYAyABKANIAIgBARIsCgVydWxlcxgEIAMoCzIdLm9wZXJhdGlvbnMudjEuUXVvdGFSdWxlVXNhZ2VCDgoMX3F1b3RhX2xpbWl0IhwKGkdldFNpZ25pbmdTZWNyZXRSYXdSZXF1ZXN0Ii0KG0dldFNpZ25pbmdTZWNyZXRSYXdSZXNwb25zZRIOCgZzZWNyZXQYASABKAkqYgoNRXhlY3V0aW9uTW9kZRIeChpFWEVDVVRJT05fTU9ERV9VTlNQRUNJRklFRBAAEhcKE0VYRUNVVElPTl9NT0RFX1NZTkMQARIYChRFWEVDVVRJT05fTU9ERV9BU1lOQxACMosSChFPcGVyYXRpb25zU2VydmljZRJdCg5MaXN0T3BlcmF0aW9ucxIkLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbnNSZXF1ZXN0GiUub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uc1Jlc3BvbnNlElcKDEdldE9wZXJhdGlvbhIiLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uUmVxdWVzdBojLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uUmVzcG9uc2USYAoPQ3JlYXRlT3BlcmF0aW9uEiUub3BlcmF0aW9ucy52MS5DcmVhdGVPcGVyYXRpb25SZXF1ZXN0GiYub3BlcmF0aW9ucy52MS5DcmVhdGVPcGVyYXRpb25SZXNwb25zZRJgCg9VcGRhdGVPcGVyYXRpb24SJS5vcGVyYXRpb25zLnYxLlVwZGF0ZU9wZXJhdGlvblJlcXVlc3QaJi5vcGVyYXRpb25zLnYxLlVwZGF0ZU9wZXJhdGlvblJlc3BvbnNlEmAKD0RlbGV0ZU9wZXJhdGlvbhIlLm9wZXJhdGlvbnMudjEuRGVsZXRlT3BlcmF0aW9uUmVxdWVzdBomLm9wZXJhdGlvbnMudjEuRGVsZXRlT3BlcmF0aW9uUmVzcG9uc2USYwoQRXhlY3V0ZU9wZXJhdGlvbhImLm9wZXJhdGlvbnMudjEuRXhlY3V0ZU9wZXJhdGlvblJlcXVlc3QaJy5vcGVyYXRpb25zLnYxLkV4ZWN1dGVPcGVyYXRpb25SZXNwb25zZRJ4ChdMaXN0T3BlcmF0aW9uRXhlY3V0aW9ucxItLm9wZXJhdGlvbnMudjEuTGlzdE9wZXJhdGlvbkV4ZWN1dGlvbnNSZXF1ZXN0Gi4ub3BlcmF0aW9ucy52MS5MaXN0T3BlcmF0aW9uRXhlY3V0aW9uc1Jlc3BvbnNlEoEBChpHZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0cxIwLm9wZXJhdGlvbnMudjEuR2V0T3BlcmF0aW9uRXhlY3V0aW9uU3RhdHNSZXF1ZXN0GjEub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25TdGF0c1Jlc3BvbnNlEnIKFUxpc3REZWFkTGV0dGVyRW50cmllcxIrLm9wZXJhdGlvbnMudjEuTGlzdERlYWRMZXR0ZXJFbnRyaWVzUmVxdWVzdBosLm9wZXJhdGlvbnMudjEuTGlzdERlYWRMZXR0ZXJFbnRyaWVzUmVzcG9uc2USbwoUUmV0cnlEZWFkTGV0dGVyRW50cnkSKi5vcGVyYXRpb25zLnYxLlJldHJ5RGVhZExldHRlckVudHJ5UmVxdWVzdBorLm9wZXJhdGlvbnMudjEuUmV0cnlEZWFkTGV0dGVyRW50cnlSZXNwb25zZRJ1ChZEaXNtaXNzRGVhZExldHRlckVudHJ5Eiwub3BlcmF0aW9ucy52MS5EaXNtaXNzRGVhZExldHRlckVudHJ5UmVxdWVzdBotLm9wZXJhdGlvbnMudjEuRGlzbWlzc0RlYWRMZXR0ZXJFbnRyeVJlc3BvbnNlEmkKEkdldERlYWRMZXR0ZXJTdGF0cxIoLm9wZXJhdGlvbnMudjEuR2V0RGVhZExldHRlclN0YXRzUmVxdWVzdBopLm9wZXJhdGlvbnMudjEuR2V0RGVhZExldHRlclN0YXRzUmVzcG9uc2USZgoRTGlzdENpcmN1aXRTdGF0ZXMSJy5vcGVyYXRpb25zLnYxLkxpc3RDaXJjdWl0U3RhdGVzUmVxdWVzdBooLm9wZXJhdGlvbnMudjEuTGlzdENpcmN1aXRTdGF0ZXNSZXNwb25zZRJXCgxSZXNldENpcmN1aXQSIi5vcGVyYXRpb25zLnYxLlJlc2V0Q2lyY3VpdFJlcXVlc3QaIy5vcGVyYXRpb25zLnYxLlJlc2V0Q2lyY3VpdFJlc3BvbnNlEngKF0dldEFwcGxpY2FibGVPcGVyYXRpb25zEi0ub3BlcmF0aW9ucy52MS5HZXRBcHBsaWNhYmxlT3BlcmF0aW9uc1JlcXVlc3QaLi5vcGVyYXRpb25zLnYxLkdldEFwcGxpY2FibGVPcGVyYXRpb25zUmVzcG9uc2UScgoVR2V0T3BlcmF0aW9uRXhlY3V0aW9uEisub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25SZXF1ZXN0Giwub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25FeGVjdXRpb25SZXNwb25zZRJ7ChhDYW5jZWxPcGVyYXRpb25FeGVjdXRpb24SLi5vcGVyYXRpb25zLnYxLkNhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlcXVlc3QaLy5vcGVyYXRpb25zLnYxLkNhbmNlbE9wZXJhdGlvbkV4ZWN1dGlvblJlc3BvbnNlEnUKFkdldE9wZXJhdGlvblF1b3RhVXNhZ2USLC5vcGVyYXRpb25zLnYxLkdldE9wZXJhdGlvblF1b3RhVXNhZ2VSZXF1ZXN0Gi0ub3BlcmF0aW9ucy52MS5HZXRPcGVyYXRpb25RdW90YVVzYWdlUmVzcG9uc2USYwoQR2V0U2lnbmluZ1NlY3JldBImLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJlcXVlc3QaJy5vcGVyYXRpb25zLnYxLkdldFNpZ25pbmdTZWNyZXRSZXNwb25zZRJsChNHZXRTaWduaW5nU2VjcmV0UmF3Eikub3BlcmF0aW9ucy52MS5HZXRTaWduaW5nU2VjcmV0UmF3UmVxdWVzdBoqLm9wZXJhdGlvbnMudjEuR2V0U2lnbmluZ1NlY3JldFJhd1Jlc3BvbnNlEngKF1JlZ2VuZXJhdGVTaWduaW5nU2VjcmV0Ei0ub3BlcmF0aW9ucy52MS5SZWdlbmVyYXRlU2lnbmluZ1NlY3JldFJlcXVlc3QaLi5vcGVyYXRpb25zLnYxLlJlZ2VuZXJhdGVTaWduaW5nU2VjcmV0UmVzcG9uc2VCQVo/Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL29wZXJhdGlvbnMvdjE7b3BlcmF0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
13
 
14
14
  /**
15
15
  * Describes the message operations.v1.Operation.
@@ -3992,9 +3992,9 @@ export declare const ProjectSchemaExperimentSchema: GenMessage<ProjectSchemaExpe
3992
3992
  */
3993
3993
  export declare type ProjectSchemaProfileSchema = Message<"settings.v1.ProjectSchemaProfileSchema"> & {
3994
3994
  /**
3995
- * @generated from field: google.protobuf.Struct fields = 1;
3995
+ * @generated from field: string fields_json = 1;
3996
3996
  */
3997
- fields?: JsonObject;
3997
+ fieldsJson: string;
3998
3998
 
3999
3999
  /**
4000
4000
  * @generated from field: repeated string public_fields = 2;
@@ -10,7 +10,7 @@ import { file_expressions_v1_expressions } from "../../expressions/v1/expression
10
10
  * Describes the file settings/v1/settings.proto.
11
11
  */
12
12
  export const file_settings_v1_settings = /*@__PURE__*/
13
- fileDesc("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCKqBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEigKBnN0YXR1cxgKIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzEjQKC2FjY2VwdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjMKCmV4cGlyZXNfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgFiAEBEhcKCnJldm9rZWRfYnkYHyABKAlIBogBARIzCgpyZXZva2VkX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCDAoKX21vZGVsX2tleUIOCgxfYWNjZXB0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3Jldm9rZWRfYnlCDQoLX3Jldm9rZWRfYXQiUgoSR2V0U2V0dGluZ3NSZXF1ZXN0EhUKCGNhdGVnb3J5GAEgASgJSACIAQESEAoDa2V5GAIgASgJSAGIAQFCCwoJX2NhdGVnb3J5QgYKBF9rZXkiPQoTR2V0U2V0dGluZ3NSZXNwb25zZRImCghzZXR0aW5ncxgBIAMoCzIULnNldHRpbmdzLnYxLlNldHRpbmciSwoUVXBkYXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI+ChVVcGRhdGVTZXR0aW5nUmVzcG9uc2USJQoHc2V0dGluZxgBIAEoCzIULnNldHRpbmdzLnYxLlNldHRpbmciuwIKFExpc3RBdWRpdExvZ3NSZXF1ZXN0EhMKBmFjdGlvbhgBIAEoCUgAiAEBEhoKDXJlc291cmNlX3R5cGUYAiABKAlIAYgBARIYCgtyZXNvdXJjZV9pZBgDIAEoCUgCiAEBEhQKB3VzZXJfaWQYBCABKAlIA4gBARItCgRmcm9tGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEisKAnRvGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfYWN0aW9uQhAKDl9yZXNvdXJjZV90eXBlQg4KDF9yZXNvdXJjZV9pZEIKCghfdXNlcl9pZEIHCgVfZnJvbUIFCgNfdG8iSwoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEiMKBGxvZ3MYASADKAsyFS5zZXR0aW5ncy52MS5BdWRpdExvZxINCgV0b3RhbBgCIAEoBSKVAQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQFCEQoPX3BhcmVudF9ub3RlX2lkIjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiiQEKEExpc3ROb3Rlc1JlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhsKDnBhcmVudF9ub3RlX2lkGAMgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhEKD19wYXJlbnRfbm90ZV9pZCJEChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUicAoVTGlzdE15TWVudGlvbnNSZXF1ZXN0Eg4KBnN0YXR1cxgBIAMoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUigwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cyKgAQoaVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QSEgoKbWVudGlvbl9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSGwoOY29tcGxldGVkX25vdGUYAyABKAlIAIgBARIbCg5kaXNtaXNzX3JlYXNvbhgEIAEoCUgBiAEBQhEKD19jb21wbGV0ZWRfbm90ZUIRCg9fZGlzbWlzc19yZWFzb24iSAobVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEikKB21lbnRpb24YASABKAsyGC5zZXR0aW5ncy52MS5Ob3RlTWVudGlvbiLaAQoSQ3JlYXRlU2hhcmVSZXF1ZXN0EjUKDXJlc291cmNlX3R5cGUYASABKA4yHi5zZXR0aW5ncy52MS5TaGFyZVJlc291cmNlVHlwZRIWCglyZWNvcmRfaWQYAiABKAlIAIgBARIUCgdmaWxlX2lkGAMgASgJSAGIAQESEwoLY3VzdG9tZXJfaWQYBCABKAkSMAoKcGVybWlzc2lvbhgFIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkIjgKE0NyZWF0ZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIdCg9HZXRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiNQoQR2V0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIsgBChFMaXN0U2hhcmVzUmVxdWVzdBI6Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGVIAIgBARIWCglyZWNvcmRfaWQYAiABKAlIAYgBARIUCgdmaWxlX2lkGAMgASgJSAKIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhAKDl9yZXNvdXJjZV90eXBlQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWQiRwoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFIqABChJVcGRhdGVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkSNQoKcGVybWlzc2lvbhgCIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkgAiAEBEi0KBnN0YXR1cxgDIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzSAGIAQFCDQoLX3Blcm1pc3Npb25CCQoHX3N0YXR1cyI4ChNVcGRhdGVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiIAoSUmV2b2tlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE1Jldm9rZVNoYXJlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgChJBY2NlcHRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOAoTQWNjZXB0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiEKE0RlY2xpbmVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOQoURGVjbGluZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSK/AwoGTG9jYWxlEgoKAmlkGAEgASgJEg4KBmxvY2FsZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLbmF0aXZlX25hbWUYBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhEKCWlzX2FjdGl2ZRgGIAEoCBIOCgZpc19ydGwYByABKAgSHAoPZmFsbGJhY2tfbG9jYWxlGAggASgJSAGIAQESGQoRZmFsbGJhY2tfcHJpb3JpdHkYCSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfbmF0aXZlX25hbWVCEgoQX2ZhbGxiYWNrX2xvY2FsZUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSJnChJMaXN0TG9jYWxlc1JlcXVlc3QSHQoQaW5jbHVkZV9pbmFjdGl2ZRgBIAEoCEgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUITChFfaW5jbHVkZV9pbmFjdGl2ZSJKChNMaXN0TG9jYWxlc1Jlc3BvbnNlEiQKB2xvY2FsZXMYASADKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUSDQoFdG90YWwYAiABKAUiHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyIqChlMaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFIkwKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgimwQKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIl0KHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giYQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUiKAoaR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiTwobR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iywEKHUNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEwoLc291cmNlX3R5cGUYBCABKAkSGAoQc291cmNlX21vZGVsX2tleRgFIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleSJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLdAQodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIngKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giZgohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBSLnAQoUQ3VzdG9tZXJQcm9maWxlRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHR5cGUYAyABKAkSDQoFbGFiZWwYBCABKAkSEAoIcmVxdWlyZWQYBSABKAgSFgoJaGVscF90ZXh0GAYgASgJSACIAQESGAoLcGxhY2Vob2xkZXIYByABKAlIAYgBARIsCgZjb25maWcYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCCQoHX2NvbmZpZyLeAQoVQ3VzdG9tZXJQcm9maWxlU2NoZW1hEgoKAmlkGAEgASgJEjEKBmZpZWxkcxgCIAMoCzIhLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUZpZWxkEhUKDXB1YmxpY19maWVsZHMYAyADKAkSDwoHdmVyc2lvbhgEIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSKgBAoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGgoNZXhwZXJpbWVudF9pZBgJIAEoCUgCiAEBEhgKC2ZhbGxiYWNrX2lkGAogASgJSAOIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgEiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0IQCg5fZXhwZXJpbWVudF9pZEIOCgxfZmFsbGJhY2tfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiYAoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIWCglpc19hY3RpdmUYASABKAhIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCDAoKX2lzX2FjdGl2ZSJeChpMaXN0VmFyaWFudENhdGFsb2dSZXNwb25zZRIxCgdlbnRyaWVzGAEgAygLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeRINCgV0b3RhbBgCIAEoBSIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiVwoZU2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCItChpTZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIm4KIlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QSMQoGZmllbGRzGAEgAygLMiEuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlRmllbGQSFQoNcHVibGljX2ZpZWxkcxgCIAMoCSJZCiNVcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRIyCgZzY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWEiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ik0KHVNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBSJkCh5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVzcG9uc2USMwoHcmVzdWx0cxgBIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVJlc3VsdBINCgV0b3RhbBgCIAEoBSIzChxEZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJIjAKHURlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiPQomR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiWQoTUmVzb2x1dGlvbkF0dHJpYnV0ZRILCgNrZXkYASABKAkSNQoGdmFsdWVzGAIgAygLMiUuc2V0dGluZ3MudjEuUmVzb2x1dGlvbkF0dHJpYnV0ZVZhbHVlIoABChhSZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUSDQoFdmFsdWUYASABKAkSDQoFY291bnQYAiABKAUSNQoMbGFzdF9zZWVuX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV9sYXN0X3NlZW5fYXQijAIKJ0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRIZChF0b3RhbF9yZXNvbHV0aW9ucxgBIAEoBRI0CgphdHRyaWJ1dGVzGAIgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x1dGlvbkF0dHJpYnV0ZRI2Cg1maXJzdF9zZWVuX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjUKDGxhc3Rfc2Vlbl9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIQCg5fZmlyc3Rfc2Vlbl9hdEIPCg1fbGFzdF9zZWVuX2F0IiwKF0dldEVkaXRvckNvbmZpZ3NSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSLAAgoVRWRpdG9yQ29uZmlnUGxhY2VtZW50EhEKCWNvbmZpZ19pZBgBIAEoCRISCgpjb25maWdfa2V5GAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEhsKDmFsbG93ZWRfb3JpZ2luGAQgASgJSAGIAQESEwoGaGVpZ2h0GAUgASgFSAKIAQESEgoFbGFiZWwYBiABKAlIA4gBARIUCgdhcGlfa2V5GAcgASgJSASIAQESFAoHYXBpX3VybBgIIAEoCUgFiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAkgASgJSAaIAQFCBgoEX3VybEIRCg9fYWxsb3dlZF9vcmlnaW5CCQoHX2hlaWdodEIICgZfbGFiZWxCCgoIX2FwaV9rZXlCCgoIX2FwaV91cmxCFAoSX2Nvbm5lY3Rpb25fZG9tYWluIlIKGEdldEVkaXRvckNvbmZpZ3NSZXNwb25zZRI2CgpwbGFjZW1lbnRzGAEgAygLMiIuc2V0dGluZ3MudjEuRWRpdG9yQ29uZmlnUGxhY2VtZW50IuUDCgtFbWFpbEFjdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEh8KEnJlc2VuZF90ZW1wbGF0ZV9pZBgFIAEoCUgBiAEBEhkKDGRlZmF1bHRfZnJvbRgGIAEoCUgCiAEBEhwKD2RlZmF1bHRfc3ViamVjdBgHIAEoCUgDiAEBEjEKC2N1c3RvbV9kYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEhEKCWlzX2FjdGl2ZRgJIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgFiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIVChNfcmVzZW5kX3RlbXBsYXRlX2lkQg8KDV9kZWZhdWx0X2Zyb21CEgoQX2RlZmF1bHRfc3ViamVjdEIOCgxfY3VzdG9tX2RhdGFCDQoLX3Byb2plY3RfaWQiOAoXTGlzdEVtYWlsQWN0aW9uc1JlcXVlc3QSDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFIlQKGExpc3RFbWFpbEFjdGlvbnNSZXNwb25zZRIpCgdhY3Rpb25zGAEgAygLMhguc2V0dGluZ3MudjEuRW1haWxBY3Rpb24SDQoFdG90YWwYAiABKAUiJAoVR2V0RW1haWxBY3Rpb25SZXF1ZXN0EgsKA2tleRgBIAEoCSJCChZHZXRFbWFpbEFjdGlvblJlc3BvbnNlEigKBmFjdGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLkVtYWlsQWN0aW9uIqYCChhVcGRhdGVFbWFpbEFjdGlvblJlcXVlc3QSCwoDa2V5GAEgASgJEh8KEnJlc2VuZF90ZW1wbGF0ZV9pZBgCIAEoCUgAiAEBEhkKDGRlZmF1bHRfZnJvbRgDIAEoCUgBiAEBEhwKD2RlZmF1bHRfc3ViamVjdBgEIAEoCUgCiAEBEjEKC2N1c3RvbV9kYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWlzX2FjdGl2ZRgGIAEoCEgEiAEBQhUKE19yZXNlbmRfdGVtcGxhdGVfaWRCDwoNX2RlZmF1bHRfZnJvbUISChBfZGVmYXVsdF9zdWJqZWN0Qg4KDF9jdXN0b21fZGF0YUIMCgpfaXNfYWN0aXZlIkUKGVVwZGF0ZUVtYWlsQWN0aW9uUmVzcG9uc2USKAoGYWN0aW9uGAEgASgLMhguc2V0dGluZ3MudjEuRW1haWxBY3Rpb24iKgoOUmVzZW5kVGVtcGxhdGUSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCSIcChpMaXN0UmVzZW5kVGVtcGxhdGVzUmVxdWVzdCJNChtMaXN0UmVzZW5kVGVtcGxhdGVzUmVzcG9uc2USLgoJdGVtcGxhdGVzGAEgAygLMhsuc2V0dGluZ3MudjEuUmVzZW5kVGVtcGxhdGUiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlImwKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUiRgoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUiGQoXTWFya01lbnRpb25zU2VlblJlcXVlc3QiKQoYTWFya01lbnRpb25zU2VlblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIi4KH0dldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIlQKIEdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iGQoXR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QiPwoYR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImChZHZXRMb2NhbGVCeUNvZGVSZXF1ZXN0EgwKBGNvZGUYASABKAkiPgoXR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKJEdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJYCiVHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSIjChREZWxldGVTZXR0aW5nUmVxdWVzdBILCgNrZXkYASABKAkiKAoVRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMwofRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCSIxCiBEZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRINCgVjb3VudBgBIAEoBSJNChZCdWxrU2V0U2V0dGluZ3NSZXF1ZXN0EjMKCHNldHRpbmdzGAEgAygLMiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QiKAoXQnVsa1NldFNldHRpbmdzUmVzcG9uc2USDQoFY291bnQYASABKAUiKQonRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlsKKEVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IhkKF0dldFByb2plY3RTY2hlbWFSZXF1ZXN0ImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlUKGVByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIIuUBChZQcm9qZWN0U2NoZW1hT3BlcmF0aW9uEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCGVuZHBvaW50GAMgASgJEhIKCnRpbWVvdXRfbXMYBCABKAUSMgoMaW5wdXRfc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEjMKDW91dHB1dF9zY2hlbWEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYSJEChRQcm9qZWN0U2NoZW1hU2VnbWVudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpc19hY3RpdmUYAyABKAgibwoXUHJvamVjdFNjaGVtYUV4cGVyaW1lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEikKCHZhcmlhbnRzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJtChpQcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYRInCgZmaWVsZHMYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhUKDXB1YmxpY19maWVsZHMYAiADKAkSDwoHdmVyc2lvbhgDIAEoBSLNAwoYR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEi8KBm1vZGVscxgBIAMoCzIfLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFNb2RlbBI+CgpkaW1lbnNpb25zGAIgAygLMiouc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SPgoOYXV0aF9wcm92aWRlcnMYAyADKAsyJi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEjcKCm9wZXJhdGlvbnMYBCADKAsyIy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hT3BlcmF0aW9uEjMKCHNlZ21lbnRzGAUgAygLMiEuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYVNlZ21lbnQSOQoLZXhwZXJpbWVudHMYBiADKAsyJC5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hRXhwZXJpbWVudBJECg5wcm9maWxlX3NjaGVtYRgHIAEoCzInLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hSACIAQFCEQoPX3Byb2ZpbGVfc2NoZW1hKnYKEVNoYXJlUmVzb3VyY2VUeXBlEiMKH1NIQVJFX1JFU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIeChpTSEFSRV9SRVNPVVJDRV9UWVBFX1JFQ09SRBABEhwKGFNIQVJFX1JFU09VUkNFX1RZUEVfRklMRRACKoUBCg9TaGFyZVBlcm1pc3Npb24SIAocU0hBUkVfUEVSTUlTU0lPTl9VTlNQRUNJRklFRBAAEhkKFVNIQVJFX1BFUk1JU1NJT05fVklFVxABEhkKFVNIQVJFX1BFUk1JU1NJT05fRURJVBACEhoKFlNIQVJFX1BFUk1JU1NJT05fQURNSU4QAyp7CgtTaGFyZVN0YXR1cxIcChhTSEFSRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIYChRTSEFSRV9TVEFUVVNfUEVORElORxABEhkKFVNIQVJFX1NUQVRVU19BQ0NFUFRFRBACEhkKFVNIQVJFX1NUQVRVU19ERUNMSU5FRBADMoYyCg9TZXR0aW5nc1NlcnZpY2USUAoLR2V0U2V0dGluZ3MSHy5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1Jlc3BvbnNlElYKDVVwZGF0ZVNldHRpbmcSIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXNwb25zZRJWCg1EZWxldGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nUmVzcG9uc2USdwoYRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5Eiwuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBotLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlElwKD0J1bGtTZXRTZXR0aW5ncxIjLnNldHRpbmdzLnYxLkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXNwb25zZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtSZXNvbHZlTm90ZRIfLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVzcG9uc2USVgoNVW5yZXNvbHZlTm90ZRIhLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXF1ZXN0GiIuc2V0dGluZ3MudjEuVW5yZXNvbHZlTm90ZVJlc3BvbnNlElAKC1NlYXJjaE5vdGVzEh8uc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXNwb25zZRJZCg5MaXN0TXlNZW50aW9ucxIiLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVxdWVzdBojLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVzcG9uc2USaAoTVXBkYXRlTWVudGlvblN0YXR1cxInLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0Giguc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEl8KEE1hcmtNZW50aW9uc1NlZW4SJC5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVxdWVzdBolLnNldHRpbmdzLnYxLk1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USUAoLQ3JlYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlc3BvbnNlEkcKCEdldFNoYXJlEhwuc2V0dGluZ3MudjEuR2V0U2hhcmVSZXF1ZXN0Gh0uc2V0dGluZ3MudjEuR2V0U2hhcmVSZXNwb25zZRJNCgpMaXN0U2hhcmVzEh4uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1JlcXVlc3QaHy5zZXR0aW5ncy52MS5MaXN0U2hhcmVzUmVzcG9uc2USUAoLVXBkYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlc3BvbnNlElAKC1Jldm9rZVNoYXJlEh8uc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXNwb25zZRJQCgtBY2NlcHRTaGFyZRIfLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVzcG9uc2USUwoMRGVjbGluZVNoYXJlEiAuc2V0dGluZ3MudjEuRGVjbGluZVNoYXJlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlc3BvbnNlEm4KFUxpc3RDb250ZXh0RGltZW5zaW9ucxIpLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXNwb25zZRJoChNHZXRDb250ZXh0RGltZW5zaW9uEicuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QaKC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USdwoYR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5Eiwuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBotLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEnEKFkNyZWF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZVcGRhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWRGVsZXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGUdldENvbnRleHREaW1lbnNpb25WYWx1ZXMSLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBouLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRJ3ChhHZXRDdXN0b21lclByb2ZpbGVTY2hlbWESLC5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USZQoSR2V0Q3VzdG9tZXJQcm9maWxlEiYuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEmUKElNldEN1c3RvbWVyUHJvZmlsZRImLnNldHRpbmdzLnYxLlNldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaJy5zZXR0aW5ncy52MS5TZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRKAAQobVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hEi8uc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBowLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlNlYXJjaEN1c3RvbWVyUHJvZmlsZXMSKi5zZXR0aW5ncy52MS5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVxdWVzdBorLnNldHRpbmdzLnYxLlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXNwb25zZRJuChVEZWxldGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USjAEKH0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXMSMy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBo0LnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQTGlzdEVtYWlsQWN0aW9ucxIkLnNldHRpbmdzLnYxLkxpc3RFbWFpbEFjdGlvbnNSZXF1ZXN0GiUuc2V0dGluZ3MudjEuTGlzdEVtYWlsQWN0aW9uc1Jlc3BvbnNlElkKDkdldEVtYWlsQWN0aW9uEiIuc2V0dGluZ3MudjEuR2V0RW1haWxBY3Rpb25SZXF1ZXN0GiMuc2V0dGluZ3MudjEuR2V0RW1haWxBY3Rpb25SZXNwb25zZRJiChFVcGRhdGVFbWFpbEFjdGlvbhIlLnNldHRpbmdzLnYxLlVwZGF0ZUVtYWlsQWN0aW9uUmVxdWVzdBomLnNldHRpbmdzLnYxLlVwZGF0ZUVtYWlsQWN0aW9uUmVzcG9uc2USaAoTTGlzdFJlc2VuZFRlbXBsYXRlcxInLnNldHRpbmdzLnYxLkxpc3RSZXNlbmRUZW1wbGF0ZXNSZXF1ZXN0Giguc2V0dGluZ3MudjEuTGlzdFJlc2VuZFRlbXBsYXRlc1Jlc3BvbnNlEl8KEEdldFByb2plY3RTY2hlbWESJC5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vc2V0dGluZ3MvdjE7c2V0dGluZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
13
+ fileDesc("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCKqBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEigKBnN0YXR1cxgKIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzEjQKC2FjY2VwdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjMKCmV4cGlyZXNfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgFiAEBEhcKCnJldm9rZWRfYnkYHyABKAlIBogBARIzCgpyZXZva2VkX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCDAoKX21vZGVsX2tleUIOCgxfYWNjZXB0ZWRfYXRCDQoLX2V4cGlyZXNfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3Jldm9rZWRfYnlCDQoLX3Jldm9rZWRfYXQiUgoSR2V0U2V0dGluZ3NSZXF1ZXN0EhUKCGNhdGVnb3J5GAEgASgJSACIAQESEAoDa2V5GAIgASgJSAGIAQFCCwoJX2NhdGVnb3J5QgYKBF9rZXkiPQoTR2V0U2V0dGluZ3NSZXNwb25zZRImCghzZXR0aW5ncxgBIAMoCzIULnNldHRpbmdzLnYxLlNldHRpbmciSwoUVXBkYXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJEiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCI+ChVVcGRhdGVTZXR0aW5nUmVzcG9uc2USJQoHc2V0dGluZxgBIAEoCzIULnNldHRpbmdzLnYxLlNldHRpbmciuwIKFExpc3RBdWRpdExvZ3NSZXF1ZXN0EhMKBmFjdGlvbhgBIAEoCUgAiAEBEhoKDXJlc291cmNlX3R5cGUYAiABKAlIAYgBARIYCgtyZXNvdXJjZV9pZBgDIAEoCUgCiAEBEhQKB3VzZXJfaWQYBCABKAlIA4gBARItCgRmcm9tGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEisKAnRvGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIJCgdfYWN0aW9uQhAKDl9yZXNvdXJjZV90eXBlQg4KDF9yZXNvdXJjZV9pZEIKCghfdXNlcl9pZEIHCgVfZnJvbUIFCgNfdG8iSwoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEiMKBGxvZ3MYASADKAsyFS5zZXR0aW5ncy52MS5BdWRpdExvZxINCgV0b3RhbBgCIAEoBSKVAQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQFCEQoPX3BhcmVudF9ub3RlX2lkIjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiiQEKEExpc3ROb3Rlc1JlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEhsKDnBhcmVudF9ub3RlX2lkGAMgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhEKD19wYXJlbnRfbm90ZV9pZCJEChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUicAoVTGlzdE15TWVudGlvbnNSZXF1ZXN0Eg4KBnN0YXR1cxgBIAMoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUigwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cyKgAQoaVXBkYXRlTWVudGlvblN0YXR1c1JlcXVlc3QSEgoKbWVudGlvbl9pZBgBIAEoCRIOCgZzdGF0dXMYAiABKAkSGwoOY29tcGxldGVkX25vdGUYAyABKAlIAIgBARIbCg5kaXNtaXNzX3JlYXNvbhgEIAEoCUgBiAEBQhEKD19jb21wbGV0ZWRfbm90ZUIRCg9fZGlzbWlzc19yZWFzb24iSAobVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEikKB21lbnRpb24YASABKAsyGC5zZXR0aW5ncy52MS5Ob3RlTWVudGlvbiLaAQoSQ3JlYXRlU2hhcmVSZXF1ZXN0EjUKDXJlc291cmNlX3R5cGUYASABKA4yHi5zZXR0aW5ncy52MS5TaGFyZVJlc291cmNlVHlwZRIWCglyZWNvcmRfaWQYAiABKAlIAIgBARIUCgdmaWxlX2lkGAMgASgJSAGIAQESEwoLY3VzdG9tZXJfaWQYBCABKAkSMAoKcGVybWlzc2lvbhgFIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkIjgKE0NyZWF0ZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIdCg9HZXRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiNQoQR2V0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIsgBChFMaXN0U2hhcmVzUmVxdWVzdBI6Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGVIAIgBARIWCglyZWNvcmRfaWQYAiABKAlIAYgBARIUCgdmaWxlX2lkGAMgASgJSAKIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQhAKDl9yZXNvdXJjZV90eXBlQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWQiRwoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFIqABChJVcGRhdGVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkSNQoKcGVybWlzc2lvbhgCIAEoDjIcLnNldHRpbmdzLnYxLlNoYXJlUGVybWlzc2lvbkgAiAEBEi0KBnN0YXR1cxgDIAEoDjIYLnNldHRpbmdzLnYxLlNoYXJlU3RhdHVzSAGIAQFCDQoLX3Blcm1pc3Npb25CCQoHX3N0YXR1cyI4ChNVcGRhdGVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiIAoSUmV2b2tlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE1Jldm9rZVNoYXJlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgChJBY2NlcHRTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOAoTQWNjZXB0U2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiEKE0RlY2xpbmVTaGFyZVJlcXVlc3QSCgoCaWQYASABKAkiOQoURGVjbGluZVNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSK/AwoGTG9jYWxlEgoKAmlkGAEgASgJEg4KBmxvY2FsZRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLbmF0aXZlX25hbWUYBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEhEKCWlzX2FjdGl2ZRgGIAEoCBIOCgZpc19ydGwYByABKAgSHAoPZmFsbGJhY2tfbG9jYWxlGAggASgJSAGIAQESGQoRZmFsbGJhY2tfcHJpb3JpdHkYCSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfbmF0aXZlX25hbWVCEgoQX2ZhbGxiYWNrX2xvY2FsZUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSJnChJMaXN0TG9jYWxlc1JlcXVlc3QSHQoQaW5jbHVkZV9pbmFjdGl2ZRgBIAEoCEgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUITChFfaW5jbHVkZV9pbmFjdGl2ZSJKChNMaXN0TG9jYWxlc1Jlc3BvbnNlEiQKB2xvY2FsZXMYASADKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUSDQoFdG90YWwYAiABKAUiHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyIqChlMaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Eg0KBWxpbWl0GAEgASgFIkwKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgimwQKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIl0KHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giYQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUiKAoaR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiTwobR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iywEKHUNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESEwoLc291cmNlX3R5cGUYBCABKAkSGAoQc291cmNlX21vZGVsX2tleRgFIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYBiABKAlIAYgBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleSJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLdAQodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIngKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFQgkKB19zZWFyY2giZgohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBSLnAQoUQ3VzdG9tZXJQcm9maWxlRmllbGQSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBHR5cGUYAyABKAkSDQoFbGFiZWwYBCABKAkSEAoIcmVxdWlyZWQYBSABKAgSFgoJaGVscF90ZXh0GAYgASgJSACIAQESGAoLcGxhY2Vob2xkZXIYByABKAlIAYgBARIsCgZjb25maWcYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQFCDAoKX2hlbHBfdGV4dEIOCgxfcGxhY2Vob2xkZXJCCQoHX2NvbmZpZyLeAQoVQ3VzdG9tZXJQcm9maWxlU2NoZW1hEgoKAmlkGAEgASgJEjEKBmZpZWxkcxgCIAMoCzIhLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUZpZWxkEhUKDXB1YmxpY19maWVsZHMYAyADKAkSDwoHdmVyc2lvbhgEIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSKgBAoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGgoNZXhwZXJpbWVudF9pZBgJIAEoCUgCiAEBEhgKC2ZhbGxiYWNrX2lkGAogASgJSAOIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgEiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0IQCg5fZXhwZXJpbWVudF9pZEIOCgxfZmFsbGJhY2tfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiYAoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIWCglpc19hY3RpdmUYASABKAhIAIgBARINCgVsaW1pdBgKIAEoBRIOCgZvZmZzZXQYCyABKAVCDAoKX2lzX2FjdGl2ZSJeChpMaXN0VmFyaWFudENhdGFsb2dSZXNwb25zZRIxCgdlbnRyaWVzGAEgAygLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeRINCgV0b3RhbBgCIAEoBSIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiVwoZU2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCItChpTZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIm4KIlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QSMQoGZmllbGRzGAEgAygLMiEuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlRmllbGQSFQoNcHVibGljX2ZpZWxkcxgCIAMoCSJZCiNVcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRIyCgZzY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWEiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ik0KHVNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBSJkCh5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVzcG9uc2USMwoHcmVzdWx0cxgBIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVJlc3VsdBINCgV0b3RhbBgCIAEoBSIzChxEZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJIjAKHURlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiPQomR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiWQoTUmVzb2x1dGlvbkF0dHJpYnV0ZRILCgNrZXkYASABKAkSNQoGdmFsdWVzGAIgAygLMiUuc2V0dGluZ3MudjEuUmVzb2x1dGlvbkF0dHJpYnV0ZVZhbHVlIoABChhSZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUSDQoFdmFsdWUYASABKAkSDQoFY291bnQYAiABKAUSNQoMbGFzdF9zZWVuX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV9sYXN0X3NlZW5fYXQijAIKJ0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRIZChF0b3RhbF9yZXNvbHV0aW9ucxgBIAEoBRI0CgphdHRyaWJ1dGVzGAIgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x1dGlvbkF0dHJpYnV0ZRI2Cg1maXJzdF9zZWVuX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjUKDGxhc3Rfc2Vlbl9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIQCg5fZmlyc3Rfc2Vlbl9hdEIPCg1fbGFzdF9zZWVuX2F0IiwKF0dldEVkaXRvckNvbmZpZ3NSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSLAAgoVRWRpdG9yQ29uZmlnUGxhY2VtZW50EhEKCWNvbmZpZ19pZBgBIAEoCRISCgpjb25maWdfa2V5GAIgASgJEhAKA3VybBgDIAEoCUgAiAEBEhsKDmFsbG93ZWRfb3JpZ2luGAQgASgJSAGIAQESEwoGaGVpZ2h0GAUgASgFSAKIAQESEgoFbGFiZWwYBiABKAlIA4gBARIUCgdhcGlfa2V5GAcgASgJSASIAQESFAoHYXBpX3VybBgIIAEoCUgFiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAkgASgJSAaIAQFCBgoEX3VybEIRCg9fYWxsb3dlZF9vcmlnaW5CCQoHX2hlaWdodEIICgZfbGFiZWxCCgoIX2FwaV9rZXlCCgoIX2FwaV91cmxCFAoSX2Nvbm5lY3Rpb25fZG9tYWluIlIKGEdldEVkaXRvckNvbmZpZ3NSZXNwb25zZRI2CgpwbGFjZW1lbnRzGAEgAygLMiIuc2V0dGluZ3MudjEuRWRpdG9yQ29uZmlnUGxhY2VtZW50IuUDCgtFbWFpbEFjdGlvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEh8KEnJlc2VuZF90ZW1wbGF0ZV9pZBgFIAEoCUgBiAEBEhkKDGRlZmF1bHRfZnJvbRgGIAEoCUgCiAEBEhwKD2RlZmF1bHRfc3ViamVjdBgHIAEoCUgDiAEBEjEKC2N1c3RvbV9kYXRhGAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEhEKCWlzX2FjdGl2ZRgJIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgFiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIVChNfcmVzZW5kX3RlbXBsYXRlX2lkQg8KDV9kZWZhdWx0X2Zyb21CEgoQX2RlZmF1bHRfc3ViamVjdEIOCgxfY3VzdG9tX2RhdGFCDQoLX3Byb2plY3RfaWQiOAoXTGlzdEVtYWlsQWN0aW9uc1JlcXVlc3QSDQoFbGltaXQYCiABKAUSDgoGb2Zmc2V0GAsgASgFIlQKGExpc3RFbWFpbEFjdGlvbnNSZXNwb25zZRIpCgdhY3Rpb25zGAEgAygLMhguc2V0dGluZ3MudjEuRW1haWxBY3Rpb24SDQoFdG90YWwYAiABKAUiJAoVR2V0RW1haWxBY3Rpb25SZXF1ZXN0EgsKA2tleRgBIAEoCSJCChZHZXRFbWFpbEFjdGlvblJlc3BvbnNlEigKBmFjdGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLkVtYWlsQWN0aW9uIqYCChhVcGRhdGVFbWFpbEFjdGlvblJlcXVlc3QSCwoDa2V5GAEgASgJEh8KEnJlc2VuZF90ZW1wbGF0ZV9pZBgCIAEoCUgAiAEBEhkKDGRlZmF1bHRfZnJvbRgDIAEoCUgBiAEBEhwKD2RlZmF1bHRfc3ViamVjdBgEIAEoCUgCiAEBEjEKC2N1c3RvbV9kYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWlzX2FjdGl2ZRgGIAEoCEgEiAEBQhUKE19yZXNlbmRfdGVtcGxhdGVfaWRCDwoNX2RlZmF1bHRfZnJvbUISChBfZGVmYXVsdF9zdWJqZWN0Qg4KDF9jdXN0b21fZGF0YUIMCgpfaXNfYWN0aXZlIkUKGVVwZGF0ZUVtYWlsQWN0aW9uUmVzcG9uc2USKAoGYWN0aW9uGAEgASgLMhguc2V0dGluZ3MudjEuRW1haWxBY3Rpb24iKgoOUmVzZW5kVGVtcGxhdGUSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCSIcChpMaXN0UmVzZW5kVGVtcGxhdGVzUmVxdWVzdCJNChtMaXN0UmVzZW5kVGVtcGxhdGVzUmVzcG9uc2USLgoJdGVtcGxhdGVzGAEgAygLMhsuc2V0dGluZ3MudjEuUmVzZW5kVGVtcGxhdGUiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlImwKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEg0KBWxpbWl0GAogASgFEg4KBm9mZnNldBgLIAEoBUIOCgxfZW50aXR5X3R5cGUiRgoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUiGQoXTWFya01lbnRpb25zU2VlblJlcXVlc3QiKQoYTWFya01lbnRpb25zU2VlblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIi4KH0dldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIlQKIEdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iGQoXR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QiPwoYR2V0RGVmYXVsdExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImChZHZXRMb2NhbGVCeUNvZGVSZXF1ZXN0EgwKBGNvZGUYASABKAkiPgoXR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKJEdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJYCiVHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSIjChREZWxldGVTZXR0aW5nUmVxdWVzdBILCgNrZXkYASABKAkiKAoVRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMwofRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBIQCghjYXRlZ29yeRgBIAEoCSIxCiBEZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRINCgVjb3VudBgBIAEoBSJNChZCdWxrU2V0U2V0dGluZ3NSZXF1ZXN0EjMKCHNldHRpbmdzGAEgAygLMiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QiKAoXQnVsa1NldFNldHRpbmdzUmVzcG9uc2USDQoFY291bnQYASABKAUiKQonRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlsKKEVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IhkKF0dldFByb2plY3RTY2hlbWFSZXF1ZXN0ImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlUKGVByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIIuUBChZQcm9qZWN0U2NoZW1hT3BlcmF0aW9uEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCGVuZHBvaW50GAMgASgJEhIKCnRpbWVvdXRfbXMYBCABKAUSMgoMaW5wdXRfc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEjMKDW91dHB1dF9zY2hlbWEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYSJEChRQcm9qZWN0U2NoZW1hU2VnbWVudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpc19hY3RpdmUYAyABKAgibwoXUHJvamVjdFNjaGVtYUV4cGVyaW1lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDgoGc3RhdHVzGAMgASgJEikKCHZhcmlhbnRzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJZChpQcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYRITCgtmaWVsZHNfanNvbhgBIAEoCRIVCg1wdWJsaWNfZmllbGRzGAIgAygJEg8KB3ZlcnNpb24YAyABKAUizQMKGEdldFByb2plY3RTY2hlbWFSZXNwb25zZRIvCgZtb2RlbHMYASADKAsyHy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hTW9kZWwSPgoKZGltZW5zaW9ucxgCIAMoCzIqLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEj4KDmF1dGhfcHJvdmlkZXJzGAMgAygLMiYuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchI3CgpvcGVyYXRpb25zGAQgAygLMiMuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU9wZXJhdGlvbhIzCghzZWdtZW50cxgFIAMoCzIhLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFTZWdtZW50EjkKC2V4cGVyaW1lbnRzGAYgAygLMiQuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUV4cGVyaW1lbnQSRAoOcHJvZmlsZV9zY2hlbWEYByABKAsyJy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYUgAiAEBQhEKD19wcm9maWxlX3NjaGVtYSp2ChFTaGFyZVJlc291cmNlVHlwZRIjCh9TSEFSRV9SRVNPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaU0hBUkVfUkVTT1VSQ0VfVFlQRV9SRUNPUkQQARIcChhTSEFSRV9SRVNPVVJDRV9UWVBFX0ZJTEUQAiqFAQoPU2hhcmVQZXJtaXNzaW9uEiAKHFNIQVJFX1BFUk1JU1NJT05fVU5TUEVDSUZJRUQQABIZChVTSEFSRV9QRVJNSVNTSU9OX1ZJRVcQARIZChVTSEFSRV9QRVJNSVNTSU9OX0VESVQQAhIaChZTSEFSRV9QRVJNSVNTSU9OX0FETUlOEAMqewoLU2hhcmVTdGF0dXMSHAoYU0hBUkVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGAoUU0hBUkVfU1RBVFVTX1BFTkRJTkcQARIZChVTSEFSRV9TVEFUVVNfQUNDRVBURUQQAhIZChVTSEFSRV9TVEFUVVNfREVDTElORUQQAzKGMgoPU2V0dGluZ3NTZXJ2aWNlElAKC0dldFNldHRpbmdzEh8uc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXF1ZXN0GiAuc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXNwb25zZRJWCg1VcGRhdGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVzcG9uc2USVgoNRGVsZXRlU2V0dGluZxIhLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdSZXF1ZXN0GiIuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEncKGERlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeRIsLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlcXVlc3QaLS5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRJcCg9CdWxrU2V0U2V0dGluZ3MSIy5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXF1ZXN0GiQuc2V0dGluZ3MudjEuQnVsa1NldFNldHRpbmdzUmVzcG9uc2USVgoNTGlzdEF1ZGl0TG9ncxIhLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXF1ZXN0GiIuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEk0KCkNyZWF0ZU5vdGUSHi5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXNwb25zZRJECgdHZXROb3RlEhsuc2V0dGluZ3MudjEuR2V0Tm90ZVJlcXVlc3QaHC5zZXR0aW5ncy52MS5HZXROb3RlUmVzcG9uc2USSgoJTGlzdE5vdGVzEh0uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVxdWVzdBoeLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1Jlc3BvbnNlEk0KClVwZGF0ZU5vdGUSHi5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXNwb25zZRJNCgpEZWxldGVOb3RlEh4uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVzcG9uc2USUAoLUmVzb2x2ZU5vdGUSHy5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlc3BvbnNlElYKDVVucmVzb2x2ZU5vdGUSIS5zZXR0aW5ncy52MS5VbnJlc29sdmVOb3RlUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXNwb25zZRJQCgtTZWFyY2hOb3RlcxIfLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJfChBNYXJrTWVudGlvbnNTZWVuEiQuc2V0dGluZ3MudjEuTWFya01lbnRpb25zU2VlblJlcXVlc3QaJS5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVzcG9uc2USUAoLTGlzdExvY2FsZXMSHy5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1Jlc3BvbnNlEkoKCUdldExvY2FsZRIdLnNldHRpbmdzLnYxLkdldExvY2FsZVJlcXVlc3QaHi5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXNwb25zZRJfChBHZXREZWZhdWx0TG9jYWxlEiQuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USXAoPR2V0TG9jYWxlQnlDb2RlEiMuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlc3BvbnNlElMKDENyZWF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXNwb25zZRJTCgxVcGRhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVzcG9uc2USUwoMRGVsZXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlc3BvbnNlEmIKEUdldE5hdlByZWZlcmVuY2VzEiUuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0GiYuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRJrChRVcGRhdGVOYXZQcmVmZXJlbmNlcxIoLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVxdWVzdBopLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USZQoSTGlzdFJlY2VudGx5T3BlbmVkEiYuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE1RyYWNrUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXNwb25zZRJrChRSZW1vdmVSZWNlbnRseU9wZW5lZBIoLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVxdWVzdBopLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTQ2xlYXJSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlElAKC0NyZWF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXNwb25zZRJHCghHZXRTaGFyZRIcLnNldHRpbmdzLnYxLkdldFNoYXJlUmVxdWVzdBodLnNldHRpbmdzLnYxLkdldFNoYXJlUmVzcG9uc2USTQoKTGlzdFNoYXJlcxIeLnNldHRpbmdzLnYxLkxpc3RTaGFyZXNSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1Jlc3BvbnNlElAKC1VwZGF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXNwb25zZRJQCgtSZXZva2VTaGFyZRIfLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVzcG9uc2USUAoLQWNjZXB0U2hhcmUSHy5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlc3BvbnNlElMKDERlY2xpbmVTaGFyZRIgLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5EZWNsaW5lU2hhcmVSZXNwb25zZRJuChVMaXN0Q29udGV4dERpbWVuc2lvbnMSKS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0Giouc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USaAoTR2V0Q29udGV4dERpbWVuc2lvbhInLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giguc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEncKGEdldENvbnRleHREaW1lbnNpb25CeUtleRIsLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QaLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXNwb25zZRJxChZDcmVhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWVXBkYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkRlbGV0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzEi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QaLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USdwoYR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hEiwuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBotLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEmUKEkdldEN1c3RvbWVyUHJvZmlsZRImLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaJy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRJlChJTZXRDdXN0b21lclByb2ZpbGUSJi5zZXR0aW5ncy52MS5TZXRDdXN0b21lclByb2ZpbGVSZXF1ZXN0Gicuc2V0dGluZ3MudjEuU2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USgAEKG1VwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIvLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QaMC5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRJxChZTZWFyY2hDdXN0b21lclByb2ZpbGVzEiouc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QaKy5zZXR0aW5ncy52MS5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVzcG9uc2USbgoVRGVsZXRlQ3VzdG9tZXJQcm9maWxlEikuc2V0dGluZ3MudjEuRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBoqLnNldHRpbmdzLnYxLkRlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEowBCh9HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzEjMuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1JlcXVlc3QaNC5zZXR0aW5ncy52MS5HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVzcG9uc2USXwoQR2V0RWRpdG9yQ29uZmlncxIkLnNldHRpbmdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEmUKEkxpc3RWYXJpYW50Q2F0YWxvZxImLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QaJy5zZXR0aW5ncy52MS5MaXN0VmFyaWFudENhdGFsb2dSZXNwb25zZRJxChZHZXRWYXJpYW50Q2F0YWxvZ0VudHJ5Eiouc2V0dGluZ3MudjEuR2V0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaKy5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLkNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGVVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5VcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlEZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2UShgEKHUdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5EjEuc2V0dGluZ3MudjEuR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0GjIuc2V0dGluZ3MudjEuR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKPAQogRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSNC5zZXR0aW5ncy52MS5FbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaNS5zZXR0aW5ncy52MS5FbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEl8KEExpc3RFbWFpbEFjdGlvbnMSJC5zZXR0aW5ncy52MS5MaXN0RW1haWxBY3Rpb25zUmVxdWVzdBolLnNldHRpbmdzLnYxLkxpc3RFbWFpbEFjdGlvbnNSZXNwb25zZRJZCg5HZXRFbWFpbEFjdGlvbhIiLnNldHRpbmdzLnYxLkdldEVtYWlsQWN0aW9uUmVxdWVzdBojLnNldHRpbmdzLnYxLkdldEVtYWlsQWN0aW9uUmVzcG9uc2USYgoRVXBkYXRlRW1haWxBY3Rpb24SJS5zZXR0aW5ncy52MS5VcGRhdGVFbWFpbEFjdGlvblJlcXVlc3QaJi5zZXR0aW5ncy52MS5VcGRhdGVFbWFpbEFjdGlvblJlc3BvbnNlEmgKE0xpc3RSZXNlbmRUZW1wbGF0ZXMSJy5zZXR0aW5ncy52MS5MaXN0UmVzZW5kVGVtcGxhdGVzUmVxdWVzdBooLnNldHRpbmdzLnYxLkxpc3RSZXNlbmRUZW1wbGF0ZXNSZXNwb25zZRJfChBHZXRQcm9qZWN0U2NoZW1hEiQuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp, file_expressions_v1_expressions]);
14
14
 
15
15
  /**
16
16
  * Describes the message settings.v1.Setting.