@foir/cli 0.64.1 → 0.65.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/dist/cli.js CHANGED
@@ -245,6 +245,11 @@ function getApiUrl(options) {
245
245
  // src/lib/errors.ts
246
246
  import chalk from "chalk";
247
247
  import { ConnectError, Code } from "@connectrpc/connect";
248
+ function describeTarget(opts) {
249
+ const apiUrl = getApiUrl(opts);
250
+ const source = process.env.FOIR_API_URL ? "set by FOIR_API_URL" : opts?.apiUrl ? "set by --api-url" : "the default endpoint; point elsewhere with FOIR_API_URL or --api-url";
251
+ return `${apiUrl} (${source})`;
252
+ }
248
253
  function extractErrorMessage(error) {
249
254
  if (!error || typeof error !== "object")
250
255
  return String(error ?? "Unknown error");
@@ -273,13 +278,26 @@ function withErrorHandler(optsFn, fn) {
273
278
  JSON.stringify({
274
279
  error: {
275
280
  message: message2,
276
- code: Code[code] ?? "UNKNOWN"
281
+ code: Code[code] ?? "UNKNOWN",
282
+ // What the call was aimed at. Always present, because the
283
+ // codes that most need it (Unavailable) are the ones whose
284
+ // message is empty, and a script's log line should answer
285
+ // "against which environment" without a re-run.
286
+ target: getApiUrl(opts)
277
287
  }
278
288
  })
279
289
  );
280
290
  } else {
281
291
  console.error(chalk.red("Error:"), message2);
282
- if (code === Code.Unauthenticated) {
292
+ if (code === Code.Unavailable) {
293
+ console.error(
294
+ chalk.gray(
295
+ `
296
+ Nothing answered at ${describeTarget(opts)}.
297
+ Check that this is the environment you meant and that it is reachable.`
298
+ )
299
+ );
300
+ } else if (code === Code.Unauthenticated) {
283
301
  console.error(
284
302
  chalk.gray("\nHint: Run `foir login` to authenticate.")
285
303
  );
@@ -676,7 +694,7 @@ import { fileDesc as fileDesc2, messageDesc as messageDesc2 } from "@bufbuild/pr
676
694
  var file_common_v1_pagination = /* @__PURE__ */ fileDesc2("Chpjb21tb24vdjEvcGFnaW5hdGlvbi5wcm90bxIJY29tbW9uLnYxIpABCghQYWdlSW5mbxIVCg1oYXNfbmV4dF9wYWdlGAEgASgIEhkKEWhhc19wcmV2aW91c19wYWdlGAIgASgIEhkKDHN0YXJ0X2N1cnNvchgDIAEoCUgAiAEBEhcKCmVuZF9jdXJzb3IYBCABKAlIAYgBAUIPCg1fc3RhcnRfY3Vyc29yQg0KC19lbmRfY3Vyc29yQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
677
695
 
678
696
  // ../../packages/proto-ts/src/identity/v1/identity_pb.js
679
- var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLpAgoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIPCgdyb2xlX2lkGAYgASgJEhAKCHJvbGVfa2V5GAcgASgJEhEKCXJvbGVfbmFtZRgIIAEoCRITCgt0ZW5hbnRfbmFtZRgKIAEoCRIZCgxwcm9qZWN0X25hbWUYCyABKAlIAYgBARIdChVlZmZlY3RpdmVfcGVybWlzc2lvbnMYCSADKAkSLgoKZ3JhbnRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKZ3JhbnRlZF9ieRgzIAEoCUgCiAEBQg0KC19wcm9qZWN0X2lkQg8KDV9wcm9qZWN0X25hbWVCDQoLX2dyYW50ZWRfYnlKBAgFEAZSBHJvbGUi9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IokDCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0SgQIHxAgUg1mbGVldF9lbmFibGVkInAKElNpZ251cFJlc3RyaWN0aW9ucxIaChJibG9ja19zdWJhZGRyZXNzZXMYASABKAgSGAoQYmxvY2tfZGlzcG9zYWJsZRgCIAEoCBIRCglhbGxvd2xpc3QYAyADKAkSEQoJYmxvY2tsaXN0GAQgAygJItAJCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEhcKCmZyb21fZW1haWwYQyABKAlIC4gBARIiChVyZXNlbmRfa2V5X3NlY3JldF9yZWYYRCABKAlIDIgBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYRiABKAhIDYgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGFEgASgISA6IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYUiABKAhID4gBARIsCgtzaWdudXBfbW9kZRhTIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUSQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxhUIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gQiAEBEhUKCGdyb3VwX2lkGFogASgJSBGIAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEINCgtfZnJvbV9lbWFpbEIYChZfcmVzZW5kX2tleV9zZWNyZXRfcmVmQiEKH19jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWRCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zQgsKCV9ncm91cF9pZEoECFAQUVIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQi0gIKDFByb2plY3RHcm91cBIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIZChFvdmVycmlkZXNfYWxsb3dlZBgGIAEoCBIeChFzb3VyY2VfcHJvamVjdF9pZBgFIAEoCUgAiAEBEhcKCmNyZWF0ZWRfYnkYKCABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgdtZW1iZXJzGDwgAygLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyQhQKEl9zb3VyY2VfcHJvamVjdF9pZEINCgtfY3JlYXRlZF9ieUoECAQQBVIEbW9kZSLTAQoSUHJvamVjdEdyb3VwTWVtYmVyEgoKAmlkGAEgASgJEhAKCGdyb3VwX2lkGAIgASgJEhIKCnByb2plY3RfaWQYAyABKAkSMQoEcm9sZRgEIAEoDjIjLmlkZW50aXR5LnYxLlByb2plY3RHcm91cE1lbWJlclJvbGUSGAoLc3RhZ2Vfb3JkZXIYBSABKAVIAIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfc3RhZ2Vfb3JkZXIi9QQKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARIPCgdyb2xlX2lkGAkgASgJEhAKCHJvbGVfa2V5GAogASgJEhEKCXJvbGVfbmFtZRgLIAEoCRIdChVlZmZlY3RpdmVfcGVybWlzc2lvbnMYDCADKAkSLQoGc3RhdHVzGBQgASgOMh0uaWRlbnRpdHkudjEuSW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI5ChB1bmRlbGl2ZXJhYmxlX2F0GCAgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFHVuZGVsaXZlcmFibGVfcmVhc29uGCEgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhMKEV91bmRlbGl2ZXJhYmxlX2F0QhcKFV91bmRlbGl2ZXJhYmxlX3JlYXNvbkoECAUQBlIEcm9sZSLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQiqwMKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEi4KEWF2YWlsYWJsZV90ZW5hbnRzGAUgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50EjAKEmF2YWlsYWJsZV9wcm9qZWN0cxgGIAMoCzIULmlkZW50aXR5LnYxLlByb2plY3QSHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAcgAygJEhUKDWNvbnRlbnRfcmVhY2gYCSABKAgSOwoNcGVuZGluZ19ncmFudBgKIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudEgCiAEBEhMKC3RlbmFudF9uYW1lGAsgASgJQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX3BlbmRpbmdfZ3JhbnRKBAgEEAVKBAgIEAlSDmVmZmVjdGl2ZV9yb2xlUg1mbGVldF9tYW5hZ2VkIn0KDExvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJfCg1Mb2dpblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIifwoTTG9naW5XaXRoT1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRILCgNvdHAYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiZgoUTG9naW5XaXRoT1RQUmVzcG9uc2USEgoKc2Vzc2lvbl9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciJwChFSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCIlChJSZXF1ZXN0T1RQUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIPCg1Mb2dvdXRSZXF1ZXN0IiEKDkxvZ291dFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi/AEKD1JlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESFwoKZmlyc3RfbmFtZRgGIAEoCUgCiAEBEhYKCWxhc3RfbmFtZRgHIAEoCUgDiAEBEhQKB3JvbGVfaWQYCCABKAlIBIgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCCgoIX3JvbGVfaWRKBAgFEAZSBHJvbGUiOAoQUmVnaXN0ZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIhgKFkdldFNpZ251cENvbmZpZ1JlcXVlc3QixAEKF0dldFNpZ251cENvbmZpZ1Jlc3BvbnNlEiAKGHdvcmtzcGFjZV9zaWdudXBzX2Nsb3NlZBgBIAEoCBIsCgtzaWdudXBfbW9kZRgCIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUSQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxgDIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gAiAEBQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zIiMKElZlcmlmeUVtYWlsUmVxdWVzdBINCgV0b2tlbhgBIAEoCSImChNWZXJpZnlFbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoeUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0IjIKH1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIxCiBTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCSI0CiFTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI1ChZWZXJpZnlFbWFpbENvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEgwKBGNvZGUYAiABKAkiPAoXVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIQCgh2ZXJpZmllZBgCIAEoCCIsChtSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiLwocUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjsKFFJlc2V0UGFzc3dvcmRSZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIoChVSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJHChVVcGRhdGVQYXNzd29yZFJlcXVlc3QSGAoQY3VycmVudF9wYXNzd29yZBgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKQoWVXBkYXRlUGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCJTCg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISHAoUY2FuX2NyZWF0ZV93b3Jrc3BhY2UYAiABKAgingMKEUNhcGFiaWxpdHlSZXF1ZXN0EgoKAmlkGAEgASgJEhIKCmNhcGFiaWxpdHkYAiABKAkSFQoNYWRtaW5fdXNlcl9pZBgDIAEoCRI0CgZzdGF0dXMYBCABKA4yJC5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdFN0YXR1cxIRCgRub3RlGAUgASgJSACIAQESGAoLcmVzb2x2ZWRfYnkYBiABKAlIAYgBARI0CgtyZXNvbHZlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCg9yZXF1ZXN0ZXJfZW1haWwYCSABKAlIA4gBARIbCg5yZXF1ZXN0ZXJfbmFtZRgKIAEoCUgEiAEBQgcKBV9ub3RlQg4KDF9yZXNvbHZlZF9ieUIOCgxfcmVzb2x2ZWRfYXRCEgoQX3JlcXVlc3Rlcl9lbWFpbEIRCg9fcmVxdWVzdGVyX25hbWUiSgoYUmVxdWVzdENhcGFiaWxpdHlSZXF1ZXN0EhIKCmNhcGFiaWxpdHkYASABKAkSEQoEbm90ZRgCIAEoCUgAiAEBQgcKBV9ub3RlIkwKGVJlcXVlc3RDYXBhYmlsaXR5UmVzcG9uc2USLwoHcmVxdWVzdBgBIAEoCzIeLmlkZW50aXR5LnYxLkNhcGFiaWxpdHlSZXF1ZXN0IiEKH0xpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QiVAogTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzUmVzcG9uc2USMAoIcmVxdWVzdHMYASADKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCJlCh1MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBI5CgZzdGF0dXMYASABKA4yJC5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdFN0YXR1c0gAiAEBQgkKB19zdGF0dXMiUgoeTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEjAKCHJlcXVlc3RzGAEgAygLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiPgofUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVxdWVzdBIKCgJpZBgBIAEoCRIPCgdhcHByb3ZlGAIgASgIIlMKIFJlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlc3BvbnNlEi8KB3JlcXVlc3QYASABKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCIjCiFCdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QiNQoiQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXNwb25zZRIPCgdncmFudGVkGAEgASgFIiQKIkJ1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QiNgojQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USDwoHcmV2b2tlZBgBIAEoBSLNAQoWQ3JlYXRlQWRtaW5Vc2VyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESEQoJdGVuYW50X2lkGAQgASgJEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIPCgdyb2xlX2lkGAcgASgJQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX3Byb2plY3RfaWRKBAgGEAdSBHJvbGUiPwoXQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIhChNHZXRBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJIjwKFEdldEFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi2AEKFlVwZGF0ZUFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhcKCmF2YXRhcl91cmwYBCABKAlIAogBARIxCgZzdGF0dXMYBSABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXNIA4gBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQgkKB19zdGF0dXMiPwoXVXBkYXRlQWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciL7AQoVTGlzdEFkbWluVXNlcnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAMQBEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIEcm9sZVIGc3RhdHVzIpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKCAQoNUmVzb2x2ZWRBY3RvchIRCglhY3Rvcl9yZWYYASABKAkSJAoEa2luZBgCIAEoDjIWLmlkZW50aXR5LnYxLkFjdG9yS2luZBINCgVsYWJlbBgDIAEoCRIVCg1hZG1pbl91c2VyX2lkGAQgASgJEhIKCmF2YXRhcl91cmwYBSABKAkiKgoUUmVzb2x2ZUFjdG9yc1JlcXVlc3QSEgoKYWN0b3JfcmVmcxgBIAMoCSJDChVSZXNvbHZlQWN0b3JzUmVzcG9uc2USKgoGYWN0b3JzGAEgAygLMhouaWRlbnRpdHkudjEuUmVzb2x2ZWRBY3RvciKyAQoYTGlzdFRlbmFudE1lbWJlcnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESEwoGc2VhcmNoGAUgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgkKB19zZWFyY2giYgoMVGVuYW50TWVtYmVyEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISLAoGYWNjZXNzGAIgAygLMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyQWNjZXNzIqIBChlMaXN0VGVuYW50TWVtYmVyc1Jlc3BvbnNlEioKB21lbWJlcnMYASADKAsyGS5pZGVudGl0eS52MS5UZW5hbnRNZW1iZXISDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoMBChJHcmFudEFjY2Vzc1JlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSFwoKcHJvamVjdF9pZBgDIAEoCUgAiAEBEg8KB3JvbGVfaWQYBSABKAlCDQoLX3Byb2plY3RfaWRKBAgEEAVSBHJvbGUiQwoTR3JhbnRBY2Nlc3NSZXNwb25zZRIsCgZhY2Nlc3MYASABKAsyHC5pZGVudGl0eS52MS5BZG1pblVzZXJBY2Nlc3MiKAoTUmV2b2tlQWNjZXNzUmVxdWVzdBIRCglhY2Nlc3NfaWQYASABKAkiJwoUUmV2b2tlQWNjZXNzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcBQoSSW1wZXJzb25hdGlvbkdyYW50EgoKAmlkGAEgASgJEhIKCmdyYW50ZWVfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCmdyYW50ZWRfYnkYBCABKAkSDgoGcmVhc29uGAUgASgJEi4KCmV4cGlyZXNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESFwoKcmV2b2tlZF9ieRgJIAEoCUgBiAEBEjUKBnN0YXR1cxgKIAEoDjIlLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudFN0YXR1cxJBCg9hcHByb3ZhbF9tZXRob2QYCyABKA4yKC5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uQXBwcm92YWxNZXRob2QSNAoLYXBwcm92ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGAoLYXBwcm92ZWRfYnkYDSABKAlIA4gBARI7ChJyZXF1ZXN0X2V4cGlyZXNfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESHwoXYWRtaW5pc3RyYXRvcnNfbm90aWZpZWQYDyABKAUSEwoLdGVuYW50X25hbWUYECABKAkSGAoQZ3JhbnRlZF9ieV9lbWFpbBgRIAEoCRIVCg1ncmFudGVlX2VtYWlsGBIgASgJQg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Qg4KDF9hcHByb3ZlZF9hdEIOCgxfYXBwcm92ZWRfYnlCFQoTX3JlcXVlc3RfZXhwaXJlc19hdCJAChtSZXF1ZXN0SW1wZXJzb25hdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCSJOChxSZXF1ZXN0SW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50Ij0KG0FwcHJvdmVJbXBlcnNvbmF0aW9uUmVxdWVzdBIQCghncmFudF9pZBgBIAEoCRIMCgRjb2RlGAIgASgJIk4KHEFwcHJvdmVJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiOgoYRGVueUltcGVyc29uYXRpb25SZXF1ZXN0EhAKCGdyYW50X2lkGAEgASgJEgwKBGNvZGUYAiABKAkiSwoZRGVueUltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCJaCh5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCRIVCg1qdXN0aWZpY2F0aW9uGAMgASgJIlEKH0JyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiKAoaUmV2b2tlSW1wZXJzb25hdGlvblJlcXVlc3QSCgoCaWQYASABKAkiTQobUmV2b2tlSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IvsBCh5MaXN0SW1wZXJzb25hdGlvbkdyYW50c1JlcXVlc3QSFwoKZ3JhbnRlZV9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBEhMKC2FjdGl2ZV9vbmx5GAMgASgIEhIKBWFmdGVyGAQgASgJSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQESEgoFZmlyc3QYBiABKAVIBIgBARIRCgRsYXN0GAcgASgFSAWIAQFCDQoLX2dyYW50ZWVfaWRCDAoKX3RlbmFudF9pZEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKH0xpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVzcG9uc2USLwoGZ3JhbnRzGAEgAygLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJPChJFbnRlclRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCK/AQoTRW50ZXJUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQSMwoFZ3JhbnQYAiABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRIAIgBAUIICgZfZ3JhbnRKBAgDEARKBAgEEAVKBAgFEAZSDWNvbnRlbnRfcmVhY2hSDXBlbmRpbmdfZ3JhbnRSC3RlbmFudF9uYW1lIpABChpNaW50TWNwV29ya2luZ1Rva2VuUmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAIgASgJSAGIAQESFgoJcmVhZF9vbmx5GAMgASgISAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIMCgpfcmVhZF9vbmx5IsgBChtNaW50TWNwV29ya2luZ1Rva2VuUmVzcG9uc2USFQoNd29ya2luZ190b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghyZXNvdXJjZRgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSEwoLdGVuYW50X25hbWUYBSABKAkSEgoKcHJvamVjdF9pZBgGIAEoCRIUCgxwcm9qZWN0X25hbWUYByABKAkiSgoVQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIkEKFkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIgChJHZXRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiPgoTR2V0Q3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn4KFVVwZGF0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEjAKBnN0YXR1cxgDIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQFCCAoGX2VtYWlsQgkKB19zdGF0dXMiQQoWVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiMKFURlbGV0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSIpChZEZWxldGVDdXN0b21lclJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7gEKFExpc3RDdXN0b21lcnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIGc3RhdHVzIpgBChVMaXN0Q3VzdG9tZXJzUmVzcG9uc2USJAoFaXRlbXMYASADKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSJCChdTdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIlMKFU1lcmdlQ3VzdG9tZXJzUmVxdWVzdBITCgtzdXJ2aXZvcl9pZBgBIAEoCRIUCgxkdXBsaWNhdGVfaWQYAiABKAkSDwoHZHJ5X3J1bhgDIAEoCCJoChZNZXJnZUN1c3RvbWVyc1Jlc3BvbnNlEg8KB3JldGlyZWQYASABKAgSDAoEbm9vcBgCIAEoCBIvCgVtb3ZlZBgDIAEoCzIgLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzTW92ZWQiwQEKE01lcmdlQ3VzdG9tZXJzTW92ZWQSDwoHcmVjb3JkcxgBIAEoBRINCgVmaWxlcxgCIAEoBRIbChNwcm92aWRlcl9pZGVudGl0aWVzGAMgASgFEhAKCHByb2ZpbGVzGAQgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFSgQIBRAGIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIvgBCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2girAEKH0xpc3RDdXN0b21lckludml0YXRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIioKHEdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiVAodR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbiItCh9SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjMKIFJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgijwEKH1Jlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkSFwoKc2VuZF9lbWFpbBgCIAEoCEgAiAEBEiAKE2FjY2VwdF91cmxfb3ZlcnJpZGUYAyABKAlIAYgBAUINCgtfc2VuZF9lbWFpbEIWChRfYWNjZXB0X3VybF9vdmVycmlkZSJ6CiBSZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEhIKCmFjY2VwdF91cmwYAiABKAkSDQoFdG9rZW4YAyABKAkiMgohVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIocBCiJWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SLAoJcHJvdmlkZXJzGAIgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIlQKH0FjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQieAogQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lchIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSFQoNcmVmcmVzaF90b2tlbhgDIAEoCSJAChNDcmVhdGVUZW5hbnRSZXF1ZXN0EgwKBG5hbWUYASABKAkSGwoTb3duZXJfYWRtaW5fdXNlcl9pZBgCIAEoCSI7ChRDcmVhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiUgoWQ3JlYXRlV29ya3NwYWNlUmVxdWVzdBIMCgRuYW1lGAEgASgJEhkKDHByb2plY3RfbmFtZRgCIAEoCUgAiAEBQg8KDV9wcm9qZWN0X25hbWUibQoXQ3JlYXRlV29ya3NwYWNlUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ei0KD2RlZmF1bHRfcHJvamVjdBgCIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiHgoQR2V0VGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQieAoTVXBkYXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESLgoGc3RhdHVzGAMgASgOMhkuaWRlbnRpdHkudjEuVGVuYW50U3RhdHVzSAGIAQFCBwoFX25hbWVCCQoHX3N0YXR1cyI7ChRVcGRhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQieQokU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIjChZwcm9qZWN0X2xpbWl0X292ZXJyaWRlGAIgASgDSACIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGUiZwolU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXNwb25zZRIjChZwcm9qZWN0X2xpbWl0X292ZXJyaWRlGAEgASgDSACIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGUi7wEKEVRlbmFudEVudGl0bGVtZW50EhEKCXRlbmFudF9pZBgBIAEoCRITCgtmZWF0dXJlX2tleRgCIAEoCRIyCgVzdGF0ZRgDIAEoDjIjLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50U3RhdGUSDgoGc2V0X2J5GAQgASgJEg4KBnJlYXNvbhgFIAEoCRIuCgpjcmVhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKJAQobU2V0VGVuYW50RW50aXRsZW1lbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRITCgtmZWF0dXJlX2tleRgCIAEoCRIyCgVzdGF0ZRgDIAEoDjIjLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50U3RhdGUSDgoGcmVhc29uGAQgASgJImgKHFNldFRlbmFudEVudGl0bGVtZW50UmVzcG9uc2USOAoLZW50aXRsZW1lbnQYASABKAsyHi5pZGVudGl0eS52MS5UZW5hbnRFbnRpdGxlbWVudEgAiAEBQg4KDF9lbnRpdGxlbWVudCIyCh1MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiVgoeTGlzdFRlbmFudEVudGl0bGVtZW50c1Jlc3BvbnNlEjQKDGVudGl0bGVtZW50cxgBIAMoCzIeLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50It4BChJMaXN0VGVuYW50c1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpQBChNMaXN0VGVuYW50c1Jlc3BvbnNlEiIKBWl0ZW1zGAEgAygLMhMuaWRlbnRpdHkudjEuVGVuYW50Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIhChNEZWxldGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVRlbmFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginAgKFENyZWF0ZVByb2plY3RSZXF1ZXN0EgwKBG5hbWUYASABKAkSGAoLZGVzY3JpcHRpb24YAiABKAlIAIgBARIRCgl0ZW5hbnRfaWQYAyABKAkSIAoTZGVmYXVsdF9sb2NhbGVfY29kZRgEIAEoCUgBiAEBEigKG2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZRgFIAEoCUgCiAEBEicKGmRlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lGAYgASgJSAOIAQESIgoVZGVmYXVsdF9sb2NhbGVfaXNfcnRsGAcgASgISASIAQESGQoMZGlzcGxheV9uYW1lGAogASgJSAWIAQESFQoIbG9nb191cmwYCyABKAlIBogBARIaCg1wcmltYXJ5X2NvbG9yGAwgASgJSAeIAQESFgoJZnJvbV9uYW1lGA0gASgJSAiIAQESFQoIcmVwbHlfdG8YDiABKAlICYgBARIaCg1zdXBwb3J0X2VtYWlsGA8gASgJSAqIAQESGQoMYXBwX2Jhc2VfdXJsGBAgASgJSAuIAQESKwoeY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkGBQgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA6IAQESMQoLc2lnbnVwX21vZGUYISABKA4yFy5pZGVudGl0eS52MS5TaWdudXBNb2RlSA+IAQESQQoTc2lnbnVwX3Jlc3RyaWN0aW9ucxgiIAEoCzIfLmlkZW50aXR5LnYxLlNpZ251cFJlc3RyaWN0aW9uc0gQiAEBQg4KDF9kZXNjcmlwdGlvbkIWChRfZGVmYXVsdF9sb2NhbGVfY29kZUIeChxfZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lQh0KG19kZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZUIYChZfZGVmYXVsdF9sb2NhbGVfaXNfcnRsQg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVDcmVhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QiHwoRR2V0UHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiOwoSR2V0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IrsHChRVcGRhdGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIvCgZzdGF0dXMYBCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzSAKIAQESGQoMZGlzcGxheV9uYW1lGAogASgJSAOIAQESFQoIbG9nb191cmwYCyABKAlIBIgBARIaCg1wcmltYXJ5X2NvbG9yGAwgASgJSAWIAQESFgoJZnJvbV9uYW1lGA0gASgJSAaIAQESFQoIcmVwbHlfdG8YDiABKAlIB4gBARIaCg1zdXBwb3J0X2VtYWlsGA8gASgJSAiIAQESGQoMYXBwX2Jhc2VfdXJsGBAgASgJSAmIAQESFwoKZnJvbV9lbWFpbBgRIAEoCUgKiAEBEiIKFXJlc2VuZF9rZXlfc2VjcmV0X3JlZhgSIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiYKGWN1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWQYHyABKAhIDYgBARIhChRjdXN0b21lcl9vdHBfZW5hYmxlZBggIAEoCEgOiAEBEjEKC3NpZ251cF9tb2RlGCEgASgOMhcuaWRlbnRpdHkudjEuU2lnbnVwTW9kZUgPiAEBEkEKE3NpZ251cF9yZXN0cmljdGlvbnMYIiABKAsyHy5pZGVudGl0eS52MS5TaWdudXBSZXN0cmljdGlvbnNIEIgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0IPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQg0KC19mcm9tX2VtYWlsQhgKFl9yZXNlbmRfa2V5X3NlY3JldF9yZWZCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3Qi8gEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoUTGlzdFByb2plY3RzUmVzcG9uc2USIwoFaXRlbXMYASADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChVEZWxldGVQcm9qZWN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChNQdXJnZVByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCSInChRQdXJnZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGEdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQgoZR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCIuChhTZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJCChlTZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IpkBChlDcmVhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhkKEW92ZXJyaWRlc19hbGxvd2VkGAUgASgIEh4KEXNvdXJjZV9wcm9qZWN0X2lkGAQgASgJSACIAQFCFAoSX3NvdXJjZV9wcm9qZWN0X2lkSgQIAxAEUgRtb2RlIkYKGkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlEigKBWdyb3VwGAEgASgLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwIiQKFkdldFByb2plY3RHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiQwoXR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USKAoFZ3JvdXAYASABKAsyGS5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXAiLQoYTGlzdFByb2plY3RHcm91cHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJUChlMaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwEg0KBXRvdGFsGAIgASgFIrsBChlVcGRhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIeChFzb3VyY2VfcHJvamVjdF9pZBgDIAEoCUgBiAEBEh4KEW92ZXJyaWRlc19hbGxvd2VkGAUgASgISAKIAQFCBwoFX25hbWVCFAoSX3NvdXJjZV9wcm9qZWN0X2lkQhQKEl9vdmVycmlkZXNfYWxsb3dlZEoECAQQBVIEbW9kZSJGChpVcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRIoCgVncm91cBgBIAEoCzIZLmlkZW50aXR5LnYxLlByb2plY3RHcm91cCInChlEZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJIi0KGkRlbGV0ZVByb2plY3RHcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginQEKGEFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKBHJvbGUYAyABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAQgASgFSACIAQFCDgoMX3N0YWdlX29yZGVyIkwKGUFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyIkUKHVJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0EhAKCGdyb3VwX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiMQoeUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgisAMKD1Byb2plY3RCcmFuZGluZxIZCgxkaXNwbGF5X25hbWUYASABKAlIAIgBARIVCghsb2dvX3VybBgCIAEoCUgBiAEBEhoKDXByaW1hcnlfY29sb3IYAyABKAlIAogBARIWCglmcm9tX25hbWUYBCABKAlIA4gBARIaCg1zdXBwb3J0X2VtYWlsGAUgASgJSASIAQESGQoMYXBwX2Jhc2VfdXJsGAYgASgJSAWIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgGiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAeIAQFCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUIQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEoECAcQCFIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQipgEKE1Byb3Zpc2lvblN0ZXBTdGF0dXMSFwoPY3JlYXRlZF9wcm9qZWN0GAEgASgIEhQKDGJyYW5kaW5nX3NldBgCIAEoCBIVCg1hcHBfaW5zdGFsbGVkGAMgASgIEhYKDnNlY3JldF93cml0dGVuGAQgASgIEhQKDGdyb3VwX2pvaW5lZBgFIAEoCBIbChNhbGxvd19saXN0X2V4dGVuZGVkGAYgASgIIrkDChdQcm92aXNpb25Qcm9qZWN0UmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhAKCGdyb3VwX2lkGAMgASgJEgwKBG5hbWUYBCABKAkSMwoIYnJhbmRpbmcYBSABKAsyHC5pZGVudGl0eS52MS5Qcm9qZWN0QnJhbmRpbmdIAIgBARITCgZhcHBfaWQYBiABKAlIAYgBARIdChBhcHBfc2VjcmV0X2xhYmVsGAcgASgJSAKIAQESHQoQYXBwX3NlY3JldF92YWx1ZRgIIAEoCUgDiAEBEhkKDG1hbmlmZXN0X3VybBgJIAEoCUgEiAEBEjIKDGFwcF9tYXBwaW5ncxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIaChJhbGxvd19saXN0X2tleV9pZHMYCyADKAlCCwoJX2JyYW5kaW5nQgkKB19hcHBfaWRCEwoRX2FwcF9zZWNyZXRfbGFiZWxCEwoRX2FwcF9zZWNyZXRfdmFsdWVCDwoNX21hbmlmZXN0X3VybEIPCg1fYXBwX21hcHBpbmdzIrMBChhQcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USFAoMcHJvdmlzaW9uX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFgoOc2NoZW1hX3ZlcnNpb24YAyABKAkSDgoGc3RhdHVzGAUgASgJEi8KBXN0ZXBzGAYgASgLMiAuaWRlbnRpdHkudjEuUHJvdmlzaW9uU3RlcFN0YXR1c0oECAQQBVIOZGVwbG95X3ZlcnNpb24iMQoZR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkitQEKGkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEhQKDHByb3Zpc2lvbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhYKDnNjaGVtYV92ZXJzaW9uGAMgASgJEg4KBnN0YXR1cxgFIAEoCRIvCgVzdGVwcxgGIAEoCzIgLmlkZW50aXR5LnYxLlByb3Zpc2lvblN0ZXBTdGF0dXNKBAgEEAVSDmRlcGxveV92ZXJzaW9uIr0BChdDcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEwoLcHJvamVjdF9pZHMYAyADKAkSLAoLaW52aXRlX3R5cGUYBSABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhQKB21lc3NhZ2UYBiABKAlIAIgBARIPCgdyb2xlX2lkGAcgASgJQgoKCF9tZXNzYWdlSgQIBBAFUgRyb2xlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiL1AQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBCgxNeUludml0YXRpb24SKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSGgoNaW52aXRlcl9lbWFpbBgDIAEoCUgAiAEBEhkKDGludml0ZXJfbmFtZRgEIAEoCUgBiAEBQhAKDl9pbnZpdGVyX2VtYWlsQg8KDV9pbnZpdGVyX25hbWUiGgoYTGlzdE15SW52aXRhdGlvbnNSZXF1ZXN0IksKGUxpc3RNeUludml0YXRpb25zUmVzcG9uc2USLgoLaW52aXRhdGlvbnMYASADKAsyGS5pZGVudGl0eS52MS5NeUludml0YXRpb24iMAoXUmV2b2tlSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJUChhBY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchISCgpzZXNzaW9uX2lkGAIgASgJIioKGVZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkidAoaVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSFAoMaW52aXRlcl9uYW1lGAMgASgJIssCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQESEwoLcHJvamVjdF9pZHMYCSADKAlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvIBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gipAEKGUxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USLAoJcHJvdmlkZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIoECChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5QgwKCl9jb25maWdfaWQiSQoaQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi6gEKGVVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiwKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESFwoKaXNfZGVmYXVsdBgFIAEoCEgDiAEBEhUKCHByaW9yaXR5GAYgASgFSASIAQFCBwoFX25hbWVCCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiJwoZRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIigKGlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIoABChtQdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXISNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiKgocVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJMCh1VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciIxCiNHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJRCiRHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzItoCChNBdXRoUHJvdmlkZXJWZXJzaW9uEgoKAmlkGAEgASgJEhgKEGF1dGhfcHJvdmlkZXJfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIrCh1HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJTCh5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USMQoHdmVyc2lvbhgBIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iswEKH0xpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1JlcXVlc3QSGAoQYXV0aF9wcm92aWRlcl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKxAQogTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USMgoIdmVyc2lvbnMYASADKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvCiFSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIogBCiJSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjUKC25ld192ZXJzaW9uGAIgASgLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbiKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiTAocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBIaCg1wbGF0Zm9ybV9sYW5lGAEgASgISACIAQFCEAoOX3BsYXRmb3JtX2xhbmUiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIjAKHk1pbnRTZXJ2aWNlVG9rZW5TY29wZU5hcnJvd2luZxIOCgZzY29wZXMYASADKAkicAoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCRJECg9zY29wZV9uYXJyb3dpbmcYAiABKAsyKy5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuU2NvcGVOYXJyb3dpbmciTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGlJlc2VuZEFjY291bnRBY2Nlc3NSZXF1ZXN0Eg8KB3VzZXJfaWQYASABKAkiugEKG1Jlc2VuZEFjY291bnRBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEjsKBGtpbmQYAiABKA4yLS5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2UuS2luZCJNCgRLaW5kEhQKEEtJTkRfVU5TUEVDSUZJRUQQABIWChJLSU5EX0FDQ09VTlRfU0VUVVAQARIXChNLSU5EX1BBU1NXT1JEX1JFU0VUEAIiMAoXUmVzZW5kSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXNlbmRJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIiChRHZXRJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJEChVHZXRJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24iKgoVQWN0aXZhdGVUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI9ChZBY3RpdmF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIxChxSZXF1ZXN0VGVuYW50RGVsZXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJECh1SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiJAoiR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdCLbAQoYQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEiEKGW5hdGl2ZV9tYW5hZ2VtZW50X2VuYWJsZWQYASABKAgSIgoVZXh0ZXJuYWxfcHJvdmlkZXJfdXJsGAIgASgJSACIAQESIwoWZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZRgDIAEoCUgBiAEBEhMKBnJlYXNvbhgEIAEoCUgCiAEBQhgKFl9leHRlcm5hbF9wcm92aWRlcl91cmxCGQoXX2V4dGVybmFsX3Byb3ZpZGVyX25hbWVCCQoHX3JlYXNvbiJcCiNHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRI1CgZzdGF0dXMYASABKAsyJS5pZGVudGl0eS52MS5DdXN0b21lck1hbmFnZW1lbnRTdGF0dXMiKAoVVmFsaWRhdGVBcGlLZXlSZXF1ZXN0Eg8KB2FwaV9rZXkYASABKAkigwIKFlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIQCghrZXlfdHlwZRgFIAEoCRIOCgZzY29wZXMYBiADKAkSFgoOYWxsb3dlZF9tb2RlbHMYByADKAkSGgoSYWxsb3dlZF9maWxlX3R5cGVzGAggAygJEhsKE3JhdGVfbGltaXRfcGVyX2hvdXIYCSABKAUSEwoLcHJvamVjdF9pZHMYCiADKAkSIAoYcGxhbl9yYXRlX2xpbWl0X3Blcl9ob3VyGAsgASgFIjcKFEN1c3RvbWVyTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIm0KFUN1c3RvbWVyTG9naW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn8KF0N1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEjIKDHByb2ZpbGVfZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fcHJvZmlsZV9kYXRhInAKGEN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKG0N1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIksKHEN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiKgoZQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCSIqChpDdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRIMCgRzZW50GAEgASgIIjsKGEN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghvdHBfY29kZRgCIAEoCSJxChlDdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAojQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiNAokQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEgwKBHNlbnQYASABKAgiQwocQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiMAodQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJNChZEZWxldGVNeUFjY291bnRSZXF1ZXN0EhUKCHBhc3N3b3JkGAEgASgJSACIAQESDwoHY29uZmlybRgCIAEoCEILCglfcGFzc3dvcmQiWgoXRGVsZXRlTXlBY2NvdW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIXCg9yZWNvcmRzX2RlbGV0ZWQYAiABKAMSFQoNZmlsZXNfZGVsZXRlZBgDIAEoAyLZAQoZU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSEAoIaWRfdG9rZW4YBSABKAkSDgoGc2NvcGVzGAYgASgJEjMKCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiHAoaU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2UigwEKGVN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEhYKCXJldHVybl90bxgCIAEoCUgAiAEBEhkKDHJlZGlyZWN0X3VyaRgDIAEoCUgBiAEBQgwKCl9yZXR1cm5fdG9CDwoNX3JlZGlyZWN0X3VyaSIyChpTdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiTwoaRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEgwKBGNvZGUYAiABKAkSDQoFc3RhdGUYAyABKAkibgobRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJIoIBCiFTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI6CiJTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJDCiRDb21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSKeAQolQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIWCglyZXR1cm5fdG8YBSABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIn8KHlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSFAoMcmVkaXJlY3RfdXJpGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIWCglyZXR1cm5fdG8YBCABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIjcKH1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIkAKIUNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIMCgRjb2RlGAEgASgJEg0KBXN0YXRlGAIgASgJIr0BCiJDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhUKDWFkbWluX3VzZXJfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgAygJEh0KFWlzX2ZpcnN0X3BhcnR5X2NsaWVudBgFIAEoCBIWCglyZXR1cm5fdG8YBiABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIiYKEkJlZ2luU3RlcFVwUmVxdWVzdBIQCghwYXNzd29yZBgBIAEoCSJkChNCZWdpblN0ZXBVcFJlc3BvbnNlEg4KBmhhbmRsZRgBIAEoCRIQCgh3ZWJhdXRobhgCIAEoCBIMCgR0b3RwGAMgASgIEh0KFXdlYmF1dGhuX29wdGlvbnNfanNvbhgEIAEoCSJbChVDb21wbGV0ZVN0ZXBVcFJlcXVlc3QSDgoGaGFuZGxlGAEgASgJEh8KF3dlYmF1dGhuX2Fzc2VydGlvbl9qc29uGAIgASgJEhEKCXRvdHBfY29kZRgDIAEoCSI5ChZDb21wbGV0ZVN0ZXBVcFJlc3BvbnNlEhIKCnN0ZXBwZWRfdXAYASABKAgSCwoDYW1yGAIgAygJIj0KGUJlZ2luTWZhRW5yb2xsbWVudFJlcXVlc3QSEAoIcGFzc3dvcmQYASABKAkSDgoGbWV0aG9kGAIgASgJInEKGkJlZ2luTWZhRW5yb2xsbWVudFJlc3BvbnNlEg4KBmhhbmRsZRgBIAEoCRIdChV3ZWJhdXRobl9vcHRpb25zX2pzb24YAiABKAkSEwoLdG90cF9zZWNyZXQYAyABKAkSDwoHdG90cF9xchgEIAEoCSJ6ChxDb21wbGV0ZU1mYUVucm9sbG1lbnRSZXF1ZXN0Eg4KBmhhbmRsZRgBIAEoCRIhChl3ZWJhdXRobl9hdHRlc3RhdGlvbl9qc29uGAIgASgJEhEKCXRvdHBfY29kZRgDIAEoCRIUCgxkaXNwbGF5X25hbWUYBCABKAkiMQodQ29tcGxldGVNZmFFbnJvbGxtZW50UmVzcG9uc2USEAoIZW5yb2xsZWQYASABKAgiRAoXR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJIq0BChhHZXRQcm92aWRlclRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSEAoIaWRfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgASgJEjMKCmV4cGlyZXNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiMgobRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJIh4KHERlbGV0ZVByb3ZpZGVyVG9rZW5zUmVzcG9uc2UidAoYUmVseWluZ1BhcnR5TG9naW5NZXRob2RzEhUKCHBhc3N3b3JkGAEgASgISACIAQESEAoDb3RwGAIgASgISAGIAQESGgoSZGlzYWJsZWRfcHJvdmlkZXJzGAMgAygJQgsKCV9wYXNzd29yZEIGCgRfb3RwIuoECgxSZWx5aW5nUGFydHkSCgoCaWQYASABKAkSFgoOcHJpbmNpcGFsX2tpbmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgFIAEoCRIMCgRuYW1lGAYgASgJEhUKDXJlZGlyZWN0X3VyaXMYByADKAkSFgoOYWxsb3dlZF9zY29wZXMYCCADKAkSFgoOaXNfZmlyc3RfcGFydHkYCSABKAgSFAoMcmVxdWlyZXNfbWZhGAogASgIEkEKDWxvZ2luX21ldGhvZHMYCyABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIXCgpjcmVhdGVkX2J5GAwgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOcG9zdF9sb2dpbl91cmwYECABKAlIBYgBARIXCg9hbGxvd2VkX29yaWdpbnMYESADKAlCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0INCgtfY3JlYXRlZF9ieUIOCgxfZGlzYWJsZWRfYXRCEQoPX3Bvc3RfbG9naW5fdXJsIvkBChlMaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqEBChpMaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iQwoWR2V0UmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkiSwoXR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSImChNSZWx5aW5nUGFydHlPcmlnaW5zEg8KB29yaWdpbnMYASADKAkinQMKGUNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgEIAEoCRIMCgRuYW1lGAUgASgJEhUKDXJlZGlyZWN0X3VyaXMYBiADKAkSFgoOYWxsb3dlZF9zY29wZXMYByADKAkSFgoOaXNfZmlyc3RfcGFydHkYCCABKAgSFAoMcmVxdWlyZXNfbWZhGAkgASgIEkEKDWxvZ2luX21ldGhvZHMYCiABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgLIAEoCUgDiAEBEhcKD2FsbG93ZWRfb3JpZ2lucxgMIAMoCUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpDcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IpYDChlVcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIRCgRuYW1lGAMgASgJSACIAQESFQoNcmVkaXJlY3RfdXJpcxgEIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgFIAMoCRIZCgxyZXF1aXJlc19tZmEYBiABKAhIAYgBARJBCg1sb2dpbl9tZXRob2RzGAcgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCCABKAlIA4gBARI+Cg9hbGxvd2VkX29yaWdpbnMYCSABKAsyIC5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlPcmlnaW5zSASIAQFCBwoFX25hbWVCDwoNX3JlcXVpcmVzX21mYUIQCg5fbG9naW5fbWV0aG9kc0IRCg9fcG9zdF9sb2dpbl91cmxCEgoQX2FsbG93ZWRfb3JpZ2lucyJOChpVcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IkcKGkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSIdChtEaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2Ui7AIKDEN1c3RvbURvbWFpbhIKCgJpZBgBIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAIgASgJEgwKBGtpbmQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSEAoIaG9zdG5hbWUYBiABKAkSDgoGc3RhdHVzGAcgASgJEhEKCXR4dF90b2tlbhgIIAEoCRI0Cgt2ZXJpZmllZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIXCgpjcmVhdGVkX2J5GAogASgJSAGIAQESLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5ImsKG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCSJQChxSZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4iJwoZVmVyaWZ5Q3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpWZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluEhAKCHZlcmlmaWVkGAIgASgIIicKGURlbGV0ZUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiHAoaRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2UiQgogR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZVJlcXVlc3QSEAoIaG9zdG5hbWUYASABKAkSDAoEa2luZBgCIAEoCSJVCiFHZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiJIChhMaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIkUKGUxpc3RDdXN0b21Eb21haW5zUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4i4gIKD0N1c3RvbWVyU2Vzc2lvbhIKCgJpZBgBIAEoCRITCgtjdXN0b21lcl9pZBgCIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3Rfc2Vlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKaXBfYWRkcmVzcxgJIAEoCUgAiAEBEhcKCnVzZXJfYWdlbnQYCiABKAlIAYgBARILCgNhbXIYCyADKAlCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnQiNwobTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiSwocTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRIrCgVpdGVtcxgBIAMoCzIcLmlkZW50aXR5LnYxLkN1c3RvbWVyU2Vzc2lvbiIqChxSZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJIh8KHVJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlIp0CChFSZWx5aW5nUGFydHlHcmFudBIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCRIOCgZzY29wZXMYBCADKAkSFwoKZ3JhbnRlZF9ieRgFIAEoCUgAiAEBEi4KCmdyYW50ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFwoKcmV2b2tlZF9ieRgIIAEoCUgCiAEBQg0KC19ncmFudGVkX2J5Qg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Ik0KHUxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0EhoKDWFkbWluX3VzZXJfaWQYASABKAlIAIgBAUIQCg5fYWRtaW5fdXNlcl9pZCJeCh5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudBINCgV0b3RhbBgCIAEoBSJUChhHcmFudFJlbHlpbmdQYXJ0eVJlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSDgoGc2NvcGVzGAMgAygJIkoKGUdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USLQoFZ3JhbnQYASABKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudCIsCh5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QSCgoCaWQYASABKAkiIQofUmV2b2tlUmVseWluZ1BhcnR5R3JhbnRSZXNwb25zZSLbAgoEUm9sZRIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEgsKA2tleRgFIAEoCRIMCgRuYW1lGAYgASgJEhMKC3Blcm1pc3Npb25zGAcgAygJEhIKCmlzX2RlZmF1bHQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDgoMX2Rpc2FibGVkX2F0IvkBChBMaXN0Um9sZXNSZXF1ZXN0EjYKDnByaW5jaXBhbF9raW5kGAEgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAyABKAVIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBARITCgZiZWZvcmUYBiABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIpABChFMaXN0Um9sZXNSZXNwb25zZRIgCgVpdGVtcxgBIAMoCzIRLmlkZW50aXR5LnYxLlJvbGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIhwKDkdldFJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldFJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSK2AQoRQ3JlYXRlUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRILCgNrZXkYBCABKAkSDAoEbmFtZRgFIAEoCRITCgtwZXJtaXNzaW9ucxgGIAMoCRISCgppc19kZWZhdWx0GAcgASgIIjUKEkNyZWF0ZVJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSJ4ChFVcGRhdGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESEwoLcGVybWlzc2lvbnMYAyADKAkSFwoKaXNfZGVmYXVsdBgEIAEoCEgBiAEBQgcKBV9uYW1lQg0KC19pc19kZWZhdWx0IjUKElVwZGF0ZVJvbGVSZXNwb25zZRIfCgRyb2xlGAEgASgLMhEuaWRlbnRpdHkudjEuUm9sZSIgChJEaXNhYmxlUm9sZVJlcXVlc3QSCgoCaWQYASABKAkiFQoTRGlzYWJsZVJvbGVSZXNwb25zZSK/AgoOUm9sZUFzc2lnbm1lbnQSCgoCaWQYASABKAkSNgoOcHJpbmNpcGFsX2tpbmQYAiABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAyABKAkSDwoHcm9sZV9pZBgEIAEoCRIuCgpncmFudGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GAYgASgJSACIAQESMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkicgoRQXNzaWduUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCSJFChJBc3NpZ25Sb2xlUmVzcG9uc2USLwoKYXNzaWdubWVudBgBIAEoCzIbLmlkZW50aXR5LnYxLlJvbGVBc3NpZ25tZW50IikKG1Jldm9rZVJvbGVBc3NpZ25tZW50UmVxdWVzdBIKCgJpZBgBIAEoCSIeChxSZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlIoMCChpMaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCAoGX3doZXJlQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQobTGlzdFJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEioKBWl0ZW1zGAEgAygLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIt4CCg1XYWl0bGlzdEVudHJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESDQoFZW1haWwYBCABKAkSKwoGc3RhdHVzGAUgASgOMhsuaWRlbnRpdHkudjEuV2FpdGxpc3RTdGF0dXMSFwoKZGVjaWRlZF9ieRgGIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlY2lkZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXQiJAoTSm9pbldhaXRsaXN0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSJBChRKb2luV2FpdGxpc3RSZXNwb25zZRIpCgVlbnRyeRgBIAEoCzIaLmlkZW50aXR5LnYxLldhaXRsaXN0RW50cnkiIQofR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdCJQCiBHZXRDdXN0b21lclNpZ251cENvbnRleHRSZXNwb25zZRIsCgtzaWdudXBfbW9kZRgBIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUiKQoYSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIkYKGUpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IuMBChpMaXN0V2FpdGxpc3RFbnRyaWVzUmVxdWVzdBIwCgZzdGF0dXMYASABKA4yGy5pZGVudGl0eS52MS5XYWl0bGlzdFN0YXR1c0gAiAEBEhAKCHBsYXRmb3JtGAIgASgIEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCQoHX3N0YXR1c0IICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUipQEKG0xpc3RXYWl0bGlzdEVudHJpZXNSZXNwb25zZRIrCgdlbnRyaWVzGAEgAygLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iKQobQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIkkKHEFwcHJvdmVXYWl0bGlzdEVudHJ5UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IiYKGERlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJGChlEZW55V2FpdGxpc3RFbnRyeVJlc3BvbnNlEikKBWVudHJ5GAEgASgLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeSJwCg9TZWN1cml0eVN1bW1hcnkSFAoMdG90YWxfbG9naW5zGAEgASgFEhUKDWZhaWxlZF9sb2dpbnMYAiABKAUSGAoQYWNjb3VudF9sb2Nrb3V0cxgDIAEoBRIWCg5zdXNwaWNpb3VzX2lwcxgEIAEoBSJuCg9TdXNwaWNpb3VzTG9naW4SDQoFZW1haWwYASABKAkSEAoIaXBfY291bnQYAiABKAUSCwoDaXBzGAMgAygJEi0KCWxhc3Rfc2VlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYgoLRmFpbGVkTG9naW4SEgoKaWRlbnRpZmllchgBIAEoCRINCgVjb3VudBgCIAEoBRIwCgxsYXN0X2F0dGVtcHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIm4KDkFjY291bnRMb2Nrb3V0Eg0KBWVtYWlsGAEgASgJEi0KCWxvY2tlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoGcmVhc29uGAMgASgJSACIAQFCCQoHX3JlYXNvbiKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIksKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkiugEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFgoJdGVuYW50X2lkGAIgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQilwEKG0dldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIs4BChZHZXRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBARIWCgl0ZW5hbnRfaWQYAyABKAlIBYgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQikAEKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5pZGVudGl0eS52MS5GYWlsZWRMb2dpbhIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iuQEKGUdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIWCgl0ZW5hbnRfaWQYAiABKAlIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDAoKX3RlbmFudF9pZCKXAQoaR2V0QWNjb3VudExvY2tvdXRzUmVzcG9uc2USLQoIbG9ja291dHMYASADKAsyGy5pZGVudGl0eS52MS5BY2NvdW50TG9ja291dBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8ijQEKH0dldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8imgEKIEdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq4BChxHZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IlEKIEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkinQEKIUdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIpYBCh1HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZRIpCgdlbnRyaWVzGAEgAygLMhguaWRlbnRpdHkudjEuRmFpbGVkTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvKrEBCg9BZG1pblVzZXJTdGF0dXMSIQodQURNSU5fVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhBRE1JTl9VU0VSX1NUQVRVU19BQ1RJVkUQARIdChlBRE1JTl9VU0VSX1NUQVRVU19QRU5ESU5HEAISHwobQURNSU5fVVNFUl9TVEFUVVNfU1VTUEVOREVEEAMSHQoZQURNSU5fVVNFUl9TVEFUVVNfREVMRVRFRBAEKokBCg5DdXN0b21lclN0YXR1cxIfChtDVVNUT01FUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZDVVNUT01FUl9TVEFUVVNfQUNUSVZFEAESGwoXQ1VTVE9NRVJfU1RBVFVTX1BFTkRJTkcQAhIdChlDVVNUT01FUl9TVEFUVVNfU1VTUEVOREVEEAMq2QEKDFRlbmFudFN0YXR1cxIdChlURU5BTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobVEVOQU5UX1NUQVRVU19QRU5ESU5HX1NFVFVQEAESGAoUVEVOQU5UX1NUQVRVU19BQ1RJVkUQAhIaChZURU5BTlRfU1RBVFVTX1BBU1RfRFVFEAMSGwoXVEVOQU5UX1NUQVRVU19TVVNQRU5ERUQQBBIbChdURU5BTlRfU1RBVFVTX0NBTkNFTExFRBAFEhkKFVRFTkFOVF9TVEFUVVNfQ0hVUk5FRBAGKmYKDVByb2plY3RTdGF0dXMSHgoaUFJPSkVDVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQUk9KRUNUX1NUQVRVU19BQ1RJVkUQARIaChZQUk9KRUNUX1NUQVRVU19ERUxFVEVEEAIqjwEKClNpZ251cE1vZGUSGwoXU0lHTlVQX01PREVfVU5TUEVDSUZJRUQQABIWChJTSUdOVVBfTU9ERV9QVUJMSUMQARIaChZTSUdOVVBfTU9ERV9SRVNUUklDVEVEEAISGAoUU0lHTlVQX01PREVfV0FJVExJU1QQAxIWChJTSUdOVVBfTU9ERV9DTE9TRUQQBCqIAQoOV2FpdGxpc3RTdGF0dXMSHwobV0FJVExJU1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXV0FJVExJU1RfU1RBVFVTX1BFTkRJTkcQARIcChhXQUlUTElTVF9TVEFUVVNfQVBQUk9WRUQQAhIaChZXQUlUTElTVF9TVEFUVVNfREVOSUVEEAMqjwEKFlByb2plY3RHcm91cE1lbWJlclJvbGUSKQolUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9VTlNQRUNJRklFRBAAEiQKIFBST0pFQ1RfR1JPVVBfTUVNQkVSX1JPTEVfU09VUkNFEAESJAogUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9UQVJHRVQQAipnCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHwobSU5WSVRFX1RZUEVfV09SS1NQQUNFX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQq5wEKGEN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIqCiZDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARInCiNDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqtgEKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAhIYChRBUElfS0VZX1RZUEVfQ09OVFJPTBADEh4KGkFQSV9LRVlfVFlQRV9QVUJMSUNfVEVOQU5UEAQSHgoaQVBJX0tFWV9UWVBFX1NFQ1JFVF9URU5BTlQQBSq5AQoXQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSKQolQ0FQQUJJTElUWV9SRVFVRVNUX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIUNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfUEVORElORxABEiYKIkNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfQVBQUk9WRUQQAhIkCiBDQVBBQklMSVRZX1JFUVVFU1RfU1RBVFVTX0RFTklFRBADKpABCglBY3RvcktpbmQSGgoWQUNUT1JfS0lORF9VTlNQRUNJRklFRBAAEhUKEUFDVE9SX0tJTkRfTUVNQkVSEAESIAocQUNUT1JfS0lORF9QTEFURk9STV9PUEVSQVRPUhACEhYKEkFDVE9SX0tJTkRfTUFDSElORRADEhYKEkFDVE9SX0tJTkRfVU5LTk9XThAEKqkBChtJbXBlcnNvbmF0aW9uQXBwcm92YWxNZXRob2QSLQopSU1QRVJTT05BVElPTl9BUFBST1ZBTF9NRVRIT0RfVU5TUEVDSUZJRUQQABIsCihJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9URU5BTlRfT1RQEAESLQopSU1QRVJTT05BVElPTl9BUFBST1ZBTF9NRVRIT0RfQlJFQUtfR0xBU1MQAiqMAgoYSW1wZXJzb25hdGlvbkdyYW50U3RhdHVzEioKJklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASJgoiSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfUEVORElORxABEiUKIUlNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX0FDVElWRRACEiYKIklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX0VYUElSRUQQAxImCiJJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19SRVZPS0VEEAQSJQohSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfREVOSUVEEAUqiQEKFlRlbmFudEVudGl0bGVtZW50U3RhdGUSKAokVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX1VOU1BFQ0lGSUVEEAASIgoeVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX0dSQU5UEAESIQodVEVOQU5UX0VOVElUTEVNRU5UX1NUQVRFX0RFTlkQAip5ChFSb2xlUHJpbmNpcGFsS2luZBIjCh9ST0xFX1BSSU5DSVBBTF9LSU5EX1VOU1BFQ0lGSUVEEAASIAocUk9MRV9QUklOQ0lQQUxfS0lORF9DVVNUT01FUhABEh0KGVJPTEVfUFJJTkNJUEFMX0tJTkRfQURNSU4QAjKLjQEKD0lkZW50aXR5U2VydmljZRI+CgVMb2dpbhIZLmlkZW50aXR5LnYxLkxvZ2luUmVxdWVzdBoaLmlkZW50aXR5LnYxLkxvZ2luUmVzcG9uc2USUwoMTG9naW5XaXRoT1RQEiAuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVxdWVzdBohLmlkZW50aXR5LnYxLkxvZ2luV2l0aE9UUFJlc3BvbnNlEk0KClJlcXVlc3RPVFASHi5pZGVudGl0eS52MS5SZXF1ZXN0T1RQUmVxdWVzdBofLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXNwb25zZRJBCgZMb2dvdXQSGi5pZGVudGl0eS52MS5Mb2dvdXRSZXF1ZXN0GhsuaWRlbnRpdHkudjEuTG9nb3V0UmVzcG9uc2USRwoIUmVnaXN0ZXISHC5pZGVudGl0eS52MS5SZWdpc3RlclJlcXVlc3QaHS5pZGVudGl0eS52MS5SZWdpc3RlclJlc3BvbnNlElwKD0dldFNpZ251cENvbmZpZxIjLmlkZW50aXR5LnYxLkdldFNpZ251cENvbmZpZ1JlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRTaWdudXBDb25maWdSZXNwb25zZRJQCgtWZXJpZnlFbWFpbBIfLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVxdWVzdBogLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsUmVzcG9uc2USdAoXUmVzZW5kVmVyaWZpY2F0aW9uRW1haWwSKy5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEnoKGVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGUSLS5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVxdWVzdBouLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRJcCg9WZXJpZnlFbWFpbENvZGUSIy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXF1ZXN0GiQuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVzcG9uc2USawoUUmVxdWVzdFBhc3N3b3JkUmVzZXQSKC5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlElYKDVJlc2V0UGFzc3dvcmQSIS5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVxdWVzdBoiLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXNwb25zZRJZCg5VcGRhdGVQYXNzd29yZBIiLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USYgoRR2V0U2Vzc2lvbkNvbnRleHQSJS5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QaJi5pZGVudGl0eS52MS5HZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlElMKDFN3aXRjaFRlbmFudBIgLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5Td2l0Y2hUZW5hbnRSZXNwb25zZRJWCg1Td2l0Y2hQcm9qZWN0EiEuaWRlbnRpdHkudjEuU3dpdGNoUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVzcG9uc2USaAoTQ2xlYXJTZXNzaW9uQ29udGV4dBInLmlkZW50aXR5LnYxLkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0GiguaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlc3BvbnNlEj4KBUdldE1lEhkuaWRlbnRpdHkudjEuR2V0TWVSZXF1ZXN0GhouaWRlbnRpdHkudjEuR2V0TWVSZXNwb25zZRJcCg9DcmVhdGVBZG1pblVzZXISIy5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuQ3JlYXRlQWRtaW5Vc2VyUmVzcG9uc2USUwoMR2V0QWRtaW5Vc2VyEiAuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVxdWVzdBohLmlkZW50aXR5LnYxLkdldEFkbWluVXNlclJlc3BvbnNlElwKD1VwZGF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVBZG1pblVzZXJSZXNwb25zZRJZCg5MaXN0QWRtaW5Vc2VycxIiLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVxdWVzdBojLmlkZW50aXR5LnYxLkxpc3RBZG1pblVzZXJzUmVzcG9uc2USVgoNUmVzb2x2ZUFjdG9ycxIhLmlkZW50aXR5LnYxLlJlc29sdmVBY3RvcnNSZXF1ZXN0GiIuaWRlbnRpdHkudjEuUmVzb2x2ZUFjdG9yc1Jlc3BvbnNlEmIKEUxpc3RUZW5hbnRNZW1iZXJzEiUuaWRlbnRpdHkudjEuTGlzdFRlbmFudE1lbWJlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdFRlbmFudE1lbWJlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlEmgKE1Jldm9rZUltcGVyc29uYXRpb24SJy5pZGVudGl0eS52MS5SZXZva2VJbXBlcnNvbmF0aW9uUmVxdWVzdBooLmlkZW50aXR5LnYxLlJldm9rZUltcGVyc29uYXRpb25SZXNwb25zZRJ0ChdMaXN0SW1wZXJzb25hdGlvbkdyYW50cxIrLmlkZW50aXR5LnYxLkxpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVxdWVzdBosLmlkZW50aXR5LnYxLkxpc3RJbXBlcnNvbmF0aW9uR3JhbnRzUmVzcG9uc2USawoUUmVxdWVzdEltcGVyc29uYXRpb24SKC5pZGVudGl0eS52MS5SZXF1ZXN0SW1wZXJzb25hdGlvblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXF1ZXN0SW1wZXJzb25hdGlvblJlc3BvbnNlEmsKFEFwcHJvdmVJbXBlcnNvbmF0aW9uEiguaWRlbnRpdHkudjEuQXBwcm92ZUltcGVyc29uYXRpb25SZXF1ZXN0GikuaWRlbnRpdHkudjEuQXBwcm92ZUltcGVyc29uYXRpb25SZXNwb25zZRJiChFEZW55SW1wZXJzb25hdGlvbhIlLmlkZW50aXR5LnYxLkRlbnlJbXBlcnNvbmF0aW9uUmVxdWVzdBomLmlkZW50aXR5LnYxLkRlbnlJbXBlcnNvbmF0aW9uUmVzcG9uc2USdAoXQnJlYWtHbGFzc0ltcGVyc29uYXRpb24SKy5pZGVudGl0eS52MS5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlcXVlc3QaLC5pZGVudGl0eS52MS5CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlc3BvbnNlElAKC0VudGVyVGVuYW50Eh8uaWRlbnRpdHkudjEuRW50ZXJUZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuRW50ZXJUZW5hbnRSZXNwb25zZRJoChNNaW50TWNwV29ya2luZ1Rva2VuEicuaWRlbnRpdHkudjEuTWludE1jcFdvcmtpbmdUb2tlblJlcXVlc3QaKC5pZGVudGl0eS52MS5NaW50TWNwV29ya2luZ1Rva2VuUmVzcG9uc2USWQoOQ3JlYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJlc3BvbnNlElAKC0dldEN1c3RvbWVyEh8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJSZXNwb25zZRJZCg5VcGRhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USWQoORGVsZXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5EZWxldGVDdXN0b21lclJlc3BvbnNlElYKDUxpc3RDdXN0b21lcnMSIS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVxdWVzdBoiLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXNwb25zZRJcCg9TdXNwZW5kQ3VzdG9tZXISIy5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USWQoOTWVyZ2VDdXN0b21lcnMSIi5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc1JlcXVlc3QaIy5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc1Jlc3BvbnNlEmgKE1NldEN1c3RvbWVyUGFzc3dvcmQSJy5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVxdWVzdBooLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXNwb25zZRJ3ChhDcmVhdGVDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdAoXTGlzdEN1c3RvbWVySW52aXRhdGlvbnMSKy5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QaLC5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEm4KFUdldEN1c3RvbWVySW52aXRhdGlvbhIpLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXZva2VDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEn0KGlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEi4uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhBY2NlcHRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0EiwuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdBotLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyU2lnbnVwQ29udGV4dFJlc3BvbnNlElMKDEpvaW5XYWl0bGlzdBIgLmlkZW50aXR5LnYxLkpvaW5XYWl0bGlzdFJlcXVlc3QaIS5pZGVudGl0eS52MS5Kb2luV2FpdGxpc3RSZXNwb25zZRJiChFKb2luQWRtaW5XYWl0bGlzdBIlLmlkZW50aXR5LnYxLkpvaW5BZG1pbldhaXRsaXN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USaAoTTGlzdFdhaXRsaXN0RW50cmllcxInLmlkZW50aXR5LnYxLkxpc3RXYWl0bGlzdEVudHJpZXNSZXF1ZXN0GiguaWRlbnRpdHkudjEuTGlzdFdhaXRsaXN0RW50cmllc1Jlc3BvbnNlEmsKFEFwcHJvdmVXYWl0bGlzdEVudHJ5EiguaWRlbnRpdHkudjEuQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0GikuaWRlbnRpdHkudjEuQXBwcm92ZVdhaXRsaXN0RW50cnlSZXNwb25zZRJiChFEZW55V2FpdGxpc3RFbnRyeRIlLmlkZW50aXR5LnYxLkRlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBomLmlkZW50aXR5LnYxLkRlbnlXYWl0bGlzdEVudHJ5UmVzcG9uc2USUwoMQ3JlYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlc3BvbnNlElwKD0NyZWF0ZVdvcmtzcGFjZRIjLmlkZW50aXR5LnYxLkNyZWF0ZVdvcmtzcGFjZVJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVXb3Jrc3BhY2VSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlEoYBCh1TZXRUZW5hbnRQcm9qZWN0TGltaXRPdmVycmlkZRIxLmlkZW50aXR5LnYxLlNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVxdWVzdBoyLmlkZW50aXR5LnYxLlNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVzcG9uc2USawoUU2V0VGVuYW50RW50aXRsZW1lbnQSKC5pZGVudGl0eS52MS5TZXRUZW5hbnRFbnRpdGxlbWVudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TZXRUZW5hbnRFbnRpdGxlbWVudFJlc3BvbnNlEnEKFkxpc3RUZW5hbnRFbnRpdGxlbWVudHMSKi5pZGVudGl0eS52MS5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRFbnRpdGxlbWVudHNSZXNwb25zZRJQCgtMaXN0VGVuYW50cxIfLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RUZW5hbnRzUmVzcG9uc2USUwoMRGVsZXRlVGVuYW50EiAuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlc3BvbnNlElYKDUNyZWF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXNwb25zZRJNCgpHZXRQcm9qZWN0Eh4uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlcXVlc3QaHy5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVzcG9uc2USVgoNVXBkYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlc3BvbnNlElMKDExpc3RQcm9qZWN0cxIgLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1JlcXVlc3QaIS5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXNwb25zZRJWCg1EZWxldGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVzcG9uc2USUwoMUHVyZ2VQcm9qZWN0EiAuaWRlbnRpdHkudjEuUHVyZ2VQcm9qZWN0UmVxdWVzdBohLmlkZW50aXR5LnYxLlB1cmdlUHJvamVjdFJlc3BvbnNlEmIKEUdldERlZmF1bHRQcm9qZWN0EiUuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRJiChFTZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLlNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USZQoSQ3JlYXRlUHJvamVjdEdyb3VwEiYuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdEdyb3VwUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlElwKD0dldFByb2plY3RHcm91cBIjLmlkZW50aXR5LnYxLkdldFByb2plY3RHcm91cFJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRQcm9qZWN0R3JvdXBSZXNwb25zZRJiChFMaXN0UHJvamVjdEdyb3VwcxIlLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0R3JvdXBzUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0R3JvdXBzUmVzcG9uc2USZQoSVXBkYXRlUHJvamVjdEdyb3VwEiYuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdEdyb3VwUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RHcm91cFJlc3BvbnNlEmUKEkRlbGV0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0R3JvdXBSZXNwb25zZRJiChFBZGRQcm9qZWN0VG9Hcm91cBIlLmlkZW50aXR5LnYxLkFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBomLmlkZW50aXR5LnYxLkFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2UScQoWUmVtb3ZlUHJvamVjdEZyb21Hcm91cBIqLmlkZW50aXR5LnYxLlJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0GisuaWRlbnRpdHkudjEuUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEl8KEFByb3Zpc2lvblByb2plY3QSJC5pZGVudGl0eS52MS5Qcm92aXNpb25Qcm9qZWN0UmVxdWVzdBolLmlkZW50aXR5LnYxLlByb3Zpc2lvblByb2plY3RSZXNwb25zZRJlChJHZXRQcm92aXNpb25TdGF0dXMSJi5pZGVudGl0eS52MS5HZXRQcm92aXNpb25TdGF0dXNSZXF1ZXN0GicuaWRlbnRpdHkudjEuR2V0UHJvdmlzaW9uU3RhdHVzUmVzcG9uc2USXwoQQ3JlYXRlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3JlYXRlSW52aXRhdGlvblJlc3BvbnNlElwKD0xpc3RJbnZpdGF0aW9ucxIjLmlkZW50aXR5LnYxLkxpc3RJbnZpdGF0aW9uc1JlcXVlc3QaJC5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXNwb25zZRJiChFMaXN0TXlJbnZpdGF0aW9ucxIlLmlkZW50aXR5LnYxLkxpc3RNeUludml0YXRpb25zUmVxdWVzdBomLmlkZW50aXR5LnYxLkxpc3RNeUludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEmgKE1Jlc2VuZEFjY291bnRBY2Nlc3MSJy5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVxdWVzdBooLmlkZW50aXR5LnYxLlJlc2VuZEFjY291bnRBY2Nlc3NSZXNwb25zZRJWCg1HZXRJbnZpdGF0aW9uEiEuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlcXVlc3QaIi5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVzcG9uc2USWQoOQWN0aXZhdGVUZW5hbnQSIi5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlcXVlc3QaIy5pZGVudGl0eS52MS5BY3RpdmF0ZVRlbmFudFJlc3BvbnNlEm4KFVJlcXVlc3RUZW5hbnREZWxldGlvbhIpLmlkZW50aXR5LnYxLlJlcXVlc3RUZW5hbnREZWxldGlvblJlcXVlc3QaKi5pZGVudGl0eS52MS5SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXNwb25zZRKAAQobR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEi8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdBowLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlElkKDlZhbGlkYXRlQXBpS2V5EiIuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXNwb25zZRJWCg1DdXN0b21lckxvZ2luEiEuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlcXVlc3QaIi5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVzcG9uc2USXwoQQ3VzdG9tZXJSZWdpc3RlchIkLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEmsKFEN1c3RvbWVyUmVmcmVzaFRva2VuEiguaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRJlChJDdXN0b21lclJlcXVlc3RPVFASJi5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USYgoRQ3VzdG9tZXJWZXJpZnlPVFASJS5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlcXVlc3QaJi5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEoMBChxDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0EjAuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaMS5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USbgoVQ3VzdG9tZXJSZXNldFBhc3N3b3JkEikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBoqLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlElwKD0RlbGV0ZU15QWNjb3VudBIjLmlkZW50aXR5LnYxLkRlbGV0ZU15QWNjb3VudFJlcXVlc3QaJC5pZGVudGl0eS52MS5EZWxldGVNeUFjY291bnRSZXNwb25zZRJlChJTdG9yZVByb3ZpZGVyVG9rZW4SJi5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2USXwoQR2V0UHJvdmlkZXJUb2tlbhIkLmlkZW50aXR5LnYxLkdldFByb3ZpZGVyVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEmsKFERlbGV0ZVByb3ZpZGVyVG9rZW5zEiguaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZRJlChJTdGFydFByb3ZpZGVyTG9naW4SJi5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USaAoTRmluaXNoUHJvdmlkZXJMb2dpbhInLmlkZW50aXR5LnYxLkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEn0KGlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRKGAQodQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXISMS5pZGVudGl0eS52MS5Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaMi5pZGVudGl0eS52MS5Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEnQKF1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyEisuaWRlbnRpdHkudjEuU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0GiwuaWRlbnRpdHkudjEuU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJ9ChpDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pchIuLmlkZW50aXR5LnYxLkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBovLmlkZW50aXR5LnYxLkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USUAoLQmVnaW5TdGVwVXASHy5pZGVudGl0eS52MS5CZWdpblN0ZXBVcFJlcXVlc3QaIC5pZGVudGl0eS52MS5CZWdpblN0ZXBVcFJlc3BvbnNlElkKDkNvbXBsZXRlU3RlcFVwEiIuaWRlbnRpdHkudjEuQ29tcGxldGVTdGVwVXBSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ29tcGxldGVTdGVwVXBSZXNwb25zZRJlChJCZWdpbk1mYUVucm9sbG1lbnQSJi5pZGVudGl0eS52MS5CZWdpbk1mYUVucm9sbG1lbnRSZXF1ZXN0GicuaWRlbnRpdHkudjEuQmVnaW5NZmFFbnJvbGxtZW50UmVzcG9uc2USbgoVQ29tcGxldGVNZmFFbnJvbGxtZW50EikuaWRlbnRpdHkudjEuQ29tcGxldGVNZmFFbnJvbGxtZW50UmVxdWVzdBoqLmlkZW50aXR5LnYxLkNvbXBsZXRlTWZhRW5yb2xsbWVudFJlc3BvbnNlEmUKEkxpc3RSZWx5aW5nUGFydGllcxImLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1JlcXVlc3QaJy5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRJcCg9HZXRSZWx5aW5nUGFydHkSIy5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USZQoSQ3JlYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKElVwZGF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJoChNEaXNhYmxlUmVseWluZ1BhcnR5EicuaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QaKC5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2USawoUUmVnaXN0ZXJDdXN0b21Eb21haW4SKC5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEnoKGUdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWUSLS5pZGVudGl0eS52MS5HZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVxdWVzdBouLmlkZW50aXR5LnYxLkdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXNwb25zZRJlChJWZXJpZnlDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USZQoSRGVsZXRlQ3VzdG9tRG9tYWluEiYuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlEmIKEUxpc3RDdXN0b21Eb21haW5zEiUuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRJrChRMaXN0Q3VzdG9tZXJTZXNzaW9ucxIoLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVxdWVzdBopLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVzcG9uc2USbgoVUmV2b2tlQ3VzdG9tZXJTZXNzaW9uEikuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlEnEKFkxpc3RSZWx5aW5nUGFydHlHcmFudHMSKi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRJiChFHcmFudFJlbHlpbmdQYXJ0eRIlLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBomLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USdAoXUmV2b2tlUmVseWluZ1BhcnR5R3JhbnQSKy5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlEkoKCUxpc3RSb2xlcxIdLmlkZW50aXR5LnYxLkxpc3RSb2xlc1JlcXVlc3QaHi5pZGVudGl0eS52MS5MaXN0Um9sZXNSZXNwb25zZRJECgdHZXRSb2xlEhsuaWRlbnRpdHkudjEuR2V0Um9sZVJlcXVlc3QaHC5pZGVudGl0eS52MS5HZXRSb2xlUmVzcG9uc2USTQoKQ3JlYXRlUm9sZRIeLmlkZW50aXR5LnYxLkNyZWF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlc3BvbnNlEk0KClVwZGF0ZVJvbGUSHi5pZGVudGl0eS52MS5VcGRhdGVSb2xlUmVxdWVzdBofLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXNwb25zZRJQCgtEaXNhYmxlUm9sZRIfLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVxdWVzdBogLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVzcG9uc2USTQoKQXNzaWduUm9sZRIeLmlkZW50aXR5LnYxLkFzc2lnblJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlc3BvbnNlEmsKFFJldm9rZVJvbGVBc3NpZ25tZW50EiguaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXNwb25zZRJoChNMaXN0Um9sZUFzc2lnbm1lbnRzEicuaWRlbnRpdHkudjEuTGlzdFJvbGVBc3NpZ25tZW50c1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2USYgoRUmVxdWVzdENhcGFiaWxpdHkSJS5pZGVudGl0eS52MS5SZXF1ZXN0Q2FwYWJpbGl0eVJlcXVlc3QaJi5pZGVudGl0eS52MS5SZXF1ZXN0Q2FwYWJpbGl0eVJlc3BvbnNlEncKGExpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0cxIsLmlkZW50aXR5LnYxLkxpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QaLS5pZGVudGl0eS52MS5MaXN0TXlDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRJxChZMaXN0Q2FwYWJpbGl0eVJlcXVlc3RzEiouaWRlbnRpdHkudjEuTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVzcG9uc2USdwoYUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0EiwuaWRlbnRpdHkudjEuUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVxdWVzdBotLmlkZW50aXR5LnYxLlJlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlc3BvbnNlEn0KGkJ1bGtBcHBseVdvcmtzcGFjZUNyZWF0aW9uEi4uaWRlbnRpdHkudjEuQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXNwb25zZRKAAQobQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uEi8uaWRlbnRpdHkudjEuQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVxdWVzdBowLmlkZW50aXR5LnYxLkJ1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEmUKEkdldFNlY3VyaXR5U3VtbWFyeRImLmlkZW50aXR5LnYxLkdldFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QaJy5pZGVudGl0eS52MS5HZXRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJoChNHZXRTdXNwaWNpb3VzTG9naW5zEicuaWRlbnRpdHkudjEuR2V0U3VzcGljaW91c0xvZ2luc1JlcXVlc3QaKC5pZGVudGl0eS52MS5HZXRTdXNwaWNpb3VzTG9naW5zUmVzcG9uc2USXAoPR2V0RmFpbGVkTG9naW5zEiMuaWRlbnRpdHkudjEuR2V0RmFpbGVkTG9naW5zUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldEZhaWxlZExvZ2luc1Jlc3BvbnNlEmUKEkdldEFjY291bnRMb2Nrb3V0cxImLmlkZW50aXR5LnYxLkdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QaJy5pZGVudGl0eS52MS5HZXRBY2NvdW50TG9ja291dHNSZXNwb25zZRJ3ChhHZXRUZW5hbnRTZWN1cml0eVN1bW1hcnkSLC5pZGVudGl0eS52MS5HZXRUZW5hbnRTZWN1cml0eVN1bW1hcnlSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuR2V0VGVuYW50U2VjdXJpdHlTdW1tYXJ5UmVzcG9uc2USegoZR2V0VGVuYW50U3VzcGljaW91c0xvZ2lucxItLmlkZW50aXR5LnYxLkdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuR2V0VGVuYW50U3VzcGljaW91c0xvZ2luc1Jlc3BvbnNlEm4KFUdldFRlbmFudEZhaWxlZExvZ2lucxIpLmlkZW50aXR5LnYxLkdldFRlbmFudEZhaWxlZExvZ2luc1JlcXVlc3QaKi5pZGVudGl0eS52MS5HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vaWRlbnRpdHkvdjE7aWRlbnRpdHl2MWIGcHJvdG8z", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
697
+ var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEiwwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEh0KEHByZWZlcnJlZF9sb2NhbGUYByABKAlIA4gBARIsCgZzdGF0dXMYFCABKA4yHC5pZGVudGl0eS52MS5BZG1pblVzZXJTdGF0dXMSOgoRZW1haWxfdmVyaWZpZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESNgoNbGFzdF9sb2dpbl9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIsCgZhY2Nlc3MYKCADKAsyHC5pZGVudGl0eS52MS5BZG1pblVzZXJBY2Nlc3MSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEITChFfcHJlZmVycmVkX2xvY2FsZUIUChJfZW1haWxfdmVyaWZpZWRfYXRCEAoOX2xhc3RfbG9naW5fYXQi6QIKD0FkbWluVXNlckFjY2VzcxIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRIXCgpwcm9qZWN0X2lkGAQgASgJSACIAQESDwoHcm9sZV9pZBgGIAEoCRIQCghyb2xlX2tleRgHIAEoCRIRCglyb2xlX25hbWUYCCABKAkSEwoLdGVuYW50X25hbWUYCiABKAkSGQoMcHJvamVjdF9uYW1lGAsgASgJSAGIAQESHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAkgAygJEi4KCmdyYW50ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYMyABKAlIAogBAUINCgtfcHJvamVjdF9pZEIPCg1fcHJvamVjdF9uYW1lQg0KC19ncmFudGVkX2J5SgQIBRAGUgRyb2xlIqkDCghDdXN0b21lchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIdChBwcmVmZXJyZWRfbG9jYWxlGAUgASgJSACIAQESKwoGc3RhdHVzGBQgASgOMhsuaWRlbnRpdHkudjEuQ3VzdG9tZXJTdGF0dXMSOgoRZW1haWxfdmVyaWZpZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESNgoNbGFzdF9sb2dpbl9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEITChFfcHJlZmVycmVkX2xvY2FsZUIUChJfZW1haWxfdmVyaWZpZWRfYXRCEAoOX2xhc3RfbG9naW5fYXQiiQMKBlRlbmFudBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEikKBnN0YXR1cxgUIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1cxI1CgxzdXNwZW5kZWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESQgoZY2FuY2VsbGF0aW9uX3NjaGVkdWxlZF9hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIbChNkYXRhX3JldGVudGlvbl9kYXlzGB4gASgFEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg8KDV9zdXNwZW5kZWRfYXRCHAoaX2NhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXRKBAgfECBSDWZsZWV0X2VuYWJsZWQicAoSU2lnbnVwUmVzdHJpY3Rpb25zEhoKEmJsb2NrX3N1YmFkZHJlc3NlcxgBIAEoCBIYChBibG9ja19kaXNwb3NhYmxlGAIgASgIEhEKCWFsbG93bGlzdBgDIAMoCRIRCglibG9ja2xpc3QYBCADKAki1goKB1Byb2plY3QSCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARISCgppc19kZWZhdWx0GAUgASgIEioKBnN0YXR1cxgUIAEoDjIaLmlkZW50aXR5LnYxLlByb2plY3RTdGF0dXMSPgoVZGVsZXRpb25fc2NoZWR1bGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCmNyZWF0ZWRfYnkYKCABKAlIAogBARIXCgp1cGRhdGVkX2J5GCkgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoMZGlzcGxheV9uYW1lGDwgASgJSASIAQESFQoIbG9nb191cmwYPSABKAlIBYgBARIaCg1wcmltYXJ5X2NvbG9yGD4gASgJSAaIAQESFgoJZnJvbV9uYW1lGD8gASgJSAeIAQESFQoIcmVwbHlfdG8YQCABKAlICIgBARIaCg1zdXBwb3J0X2VtYWlsGEEgASgJSAmIAQESGQoMYXBwX2Jhc2VfdXJsGEIgASgJSAqIAQESFwoKZnJvbV9lbWFpbBhDIAEoCUgLiAEBEiIKFXJlc2VuZF9rZXlfc2VjcmV0X3JlZhhEIAEoCUgMiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgNiAEBEiYKGWN1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWQYUSABKAhIDogBARIhChRjdXN0b21lcl9vdHBfZW5hYmxlZBhSIAEoCEgPiAEBEiwKC3NpZ251cF9tb2RlGFMgASgOMhcuaWRlbnRpdHkudjEuU2lnbnVwTW9kZRJBChNzaWdudXBfcmVzdHJpY3Rpb25zGFQgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGFUgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYViABKAhIEogBARIVCghncm91cF9pZBhaIAEoCUgTiAEBQg4KDF9kZXNjcmlwdGlvbkIYChZfZGVsZXRpb25fc2NoZWR1bGVkX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5Qg8KDV9kaXNwbGF5X25hbWVCCwoJX2xvZ29fdXJsQhAKDl9wcmltYXJ5X2NvbG9yQgwKCl9mcm9tX25hbWVCCwoJX3JlcGx5X3RvQhAKDl9zdXBwb3J0X2VtYWlsQg8KDV9hcHBfYmFzZV91cmxCDQoLX2Zyb21fZW1haWxCGAoWX3Jlc2VuZF9rZXlfc2VjcmV0X3JlZkIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEIWChRfc2lnbnVwX3Jlc3RyaWN0aW9uc0IbChlfbm90ZV9zY3JlZW5zaG90c19lbmFibGVkQhoKGF9hbm9ueW1vdXNfbm90ZXNfZW5hYmxlZEILCglfZ3JvdXBfaWRKBAhQEFFSF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkItICCgxQcm9qZWN0R3JvdXASCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGQoRb3ZlcnJpZGVzX2FsbG93ZWQYBiABKAgSHgoRc291cmNlX3Byb2plY3RfaWQYBSABKAlIAIgBARIXCgpjcmVhdGVkX2J5GCggASgJSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoHbWVtYmVycxg8IAMoCzIfLmlkZW50aXR5LnYxLlByb2plY3RHcm91cE1lbWJlckIUChJfc291cmNlX3Byb2plY3RfaWRCDQoLX2NyZWF0ZWRfYnlKBAgEEAVSBG1vZGUi0wEKElByb2plY3RHcm91cE1lbWJlchIKCgJpZBgBIAEoCRIQCghncm91cF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjEKBHJvbGUYBCABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAUgASgFSACIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3N0YWdlX29yZGVyIvUECgpJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRITCgtwcm9qZWN0X2lkcxgEIAMoCRIsCgtpbnZpdGVfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSEgoKaW52aXRlZF9ieRgHIAEoCRIUCgdtZXNzYWdlGAggASgJSACIAQESDwoHcm9sZV9pZBgJIAEoCRIQCghyb2xlX2tleRgKIAEoCRIRCglyb2xlX25hbWUYCyABKAkSHQoVZWZmZWN0aXZlX3Blcm1pc3Npb25zGAwgAygJEi0KBnN0YXR1cxgUIAEoDjIdLmlkZW50aXR5LnYxLkludml0YXRpb25TdGF0dXMSLgoKZXhwaXJlc19hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLYWNjZXB0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESOQoQdW5kZWxpdmVyYWJsZV9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIhChR1bmRlbGl2ZXJhYmxlX3JlYXNvbhghIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdEITChFfdW5kZWxpdmVyYWJsZV9hdEIXChVfdW5kZWxpdmVyYWJsZV9yZWFzb25KBAgFEAZSBHJvbGUi6QMKEkN1c3RvbWVySW52aXRhdGlvbhIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIRCgl0ZW5hbnRfaWQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRIXCgppbnZpdGVkX2J5GAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEjUKBnN0YXR1cxgUIAEoDjIlLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIuCgpleHBpcmVzX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgthY2NlcHRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIhChRhY2NlcHRlZF9jdXN0b21lcl9pZBggIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19pbnZpdGVkX2J5QgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdEIXChVfYWNjZXB0ZWRfY3VzdG9tZXJfaWQi2QQKBkFwaUtleRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEhIKCmtleV9wcmVmaXgYBSABKAkSKQoIa2V5X3R5cGUYBiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEhQKB3Jhd19rZXkYCiABKAlIAIgBARIRCglpc19hY3RpdmUYFCABKAgSIAoTcmF0ZV9saW1pdF9wZXJfaG91chgVIAEoBUgBiAEBEjMKCmV4cGlyZXNfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESDgoGc2NvcGVzGBcgAygJEi4KCG1ldGFkYXRhGBggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEjUKDGxhc3RfdXNlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARITCgt1c2FnZV9jb3VudBgfIAEoBRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9yYXdfa2V5QhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyQg0KC19leHBpcmVzX2F0QgsKCV9tZXRhZGF0YUIPCg1fbGFzdF91c2VkX2F0IqsDCg5TZXNzaW9uQ29udGV4dBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAIgASgJSAGIAQESJAoEdXNlchgDIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchIuChFhdmFpbGFibGVfdGVuYW50cxgFIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBIwChJhdmFpbGFibGVfcHJvamVjdHMYBiADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eh0KFWVmZmVjdGl2ZV9wZXJtaXNzaW9ucxgHIAMoCRIVCg1jb250ZW50X3JlYWNoGAkgASgIEjsKDXBlbmRpbmdfZ3JhbnQYCiABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRIAogBARITCgt0ZW5hbnRfbmFtZRgLIAEoCUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9wZW5kaW5nX2dyYW50SgQIBBAFSgQICBAJUg5lZmZlY3RpdmVfcm9sZVINZmxlZXRfbWFuYWdlZCJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIvwBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEhcKCmZpcnN0X25hbWUYBiABKAlIAogBARIWCglsYXN0X25hbWUYByABKAlIA4gBARIUCgdyb2xlX2lkGAggASgJSASIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgoKCF9yb2xlX2lkSgQIBRAGUgRyb2xlIjgKEFJlZ2lzdGVyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciIYChZHZXRTaWdudXBDb25maWdSZXF1ZXN0IsQBChdHZXRTaWdudXBDb25maWdSZXNwb25zZRIgChh3b3Jrc3BhY2Vfc2lnbnVwc19jbG9zZWQYASABKAgSLAoLc2lnbnVwX21vZGUYAiABKA4yFy5pZGVudGl0eS52MS5TaWdudXBNb2RlEkEKE3NpZ251cF9yZXN0cmljdGlvbnMYAyABKAsyHy5pZGVudGl0eS52MS5TaWdudXBSZXN0cmljdGlvbnNIAIgBAUIWChRfc2lnbnVwX3Jlc3RyaWN0aW9ucyIjChJWZXJpZnlFbWFpbFJlcXVlc3QSDQoFdG9rZW4YASABKAkiJgoTVmVyaWZ5RW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiAKHlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIyCh9SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMQogU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkiNAohU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNQoWVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIMCgRjb2RlGAIgASgJIjwKF1ZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIdmVyaWZpZWQYAiABKAgiLAobUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIi8KHFJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI7ChRSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiKAoVUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiRwoVVXBkYXRlUGFzc3dvcmRSZXF1ZXN0EhgKEGN1cnJlbnRfcGFzc3dvcmQYASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIikKFlVwZGF0ZVBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIaChhHZXRTZXNzaW9uQ29udGV4dFJlcXVlc3QiSQoZR2V0U2Vzc2lvbkNvbnRleHRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKAoTU3dpdGNoVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiRAoUU3dpdGNoVGVuYW50UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IioKFFN3aXRjaFByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiRQoVU3dpdGNoUHJvamVjdFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIcChpDbGVhclNlc3Npb25Db250ZXh0UmVxdWVzdCIuChtDbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIOCgxHZXRNZVJlcXVlc3QiUwoNR2V0TWVSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhwKFGNhbl9jcmVhdGVfd29ya3NwYWNlGAIgASgIIp4DChFDYXBhYmlsaXR5UmVxdWVzdBIKCgJpZBgBIAEoCRISCgpjYXBhYmlsaXR5GAIgASgJEhUKDWFkbWluX3VzZXJfaWQYAyABKAkSNAoGc3RhdHVzGAQgASgOMiQuaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSEQoEbm90ZRgFIAEoCUgAiAEBEhgKC3Jlc29sdmVkX2J5GAYgASgJSAGIAQESNAoLcmVzb2x2ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoPcmVxdWVzdGVyX2VtYWlsGAkgASgJSAOIAQESGwoOcmVxdWVzdGVyX25hbWUYCiABKAlIBIgBAUIHCgVfbm90ZUIOCgxfcmVzb2x2ZWRfYnlCDgoMX3Jlc29sdmVkX2F0QhIKEF9yZXF1ZXN0ZXJfZW1haWxCEQoPX3JlcXVlc3Rlcl9uYW1lIkoKGFJlcXVlc3RDYXBhYmlsaXR5UmVxdWVzdBISCgpjYXBhYmlsaXR5GAEgASgJEhEKBG5vdGUYAiABKAlIAIgBAUIHCgVfbm90ZSJMChlSZXF1ZXN0Q2FwYWJpbGl0eVJlc3BvbnNlEi8KB3JlcXVlc3QYASABKAsyHi5pZGVudGl0eS52MS5DYXBhYmlsaXR5UmVxdWVzdCIhCh9MaXN0TXlDYXBhYmlsaXR5UmVxdWVzdHNSZXF1ZXN0IlQKIExpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEjAKCHJlcXVlc3RzGAEgAygLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiZQodTGlzdENhcGFiaWxpdHlSZXF1ZXN0c1JlcXVlc3QSOQoGc3RhdHVzGAEgASgOMiQuaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXNIAIgBAUIJCgdfc3RhdHVzIlIKHkxpc3RDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRIwCghyZXF1ZXN0cxgBIAMoCzIeLmlkZW50aXR5LnYxLkNhcGFiaWxpdHlSZXF1ZXN0Ij4KH1Jlc29sdmVDYXBhYmlsaXR5UmVxdWVzdFJlcXVlc3QSCgoCaWQYASABKAkSDwoHYXBwcm92ZRgCIAEoCCJTCiBSZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3RSZXNwb25zZRIvCgdyZXF1ZXN0GAEgASgLMh4uaWRlbnRpdHkudjEuQ2FwYWJpbGl0eVJlcXVlc3QiIwohQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0IjUKIkJ1bGtBcHBseVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USDwoHZ3JhbnRlZBgBIAEoBSIkCiJCdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0IjYKI0J1bGtSZXZva2VXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEg8KB3Jldm9rZWQYASABKAUizQEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESDwoHcm9sZV9pZBgHIAEoCUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19wcm9qZWN0X2lkSgQIBhAHUgRyb2xlIj8KF0NyZWF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIQoTR2V0QWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRHZXRBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyItgBChZVcGRhdGVBZG1pblVzZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhcKCmZpcnN0X25hbWUYAiABKAlIAIgBARIWCglsYXN0X25hbWUYAyABKAlIAYgBARIXCgphdmF0YXJfdXJsGAQgASgJSAKIAQESMQoGc3RhdHVzGAUgASgOMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyU3RhdHVzSAOIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfYXZhdGFyX3VybEIJCgdfc3RhdHVzIj8KF1VwZGF0ZUFkbWluVXNlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi+wEKFUxpc3RBZG1pblVzZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgCEANKBAgDEARKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSBHJvbGVSBnN0YXR1cyKaAQoWTGlzdEFkbWluVXNlcnNSZXNwb25zZRIlCgVpdGVtcxgBIAMoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iggEKDVJlc29sdmVkQWN0b3ISEQoJYWN0b3JfcmVmGAEgASgJEiQKBGtpbmQYAiABKA4yFi5pZGVudGl0eS52MS5BY3RvcktpbmQSDQoFbGFiZWwYAyABKAkSFQoNYWRtaW5fdXNlcl9pZBgEIAEoCRISCgphdmF0YXJfdXJsGAUgASgJIioKFFJlc29sdmVBY3RvcnNSZXF1ZXN0EhIKCmFjdG9yX3JlZnMYASADKAkiQwoVUmVzb2x2ZUFjdG9yc1Jlc3BvbnNlEioKBmFjdG9ycxgBIAMoCzIaLmlkZW50aXR5LnYxLlJlc29sdmVkQWN0b3IisgEKGExpc3RUZW5hbnRNZW1iZXJzUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBEhMKBnNlYXJjaBgFIAEoCUgEiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEIJCgdfc2VhcmNoImIKDFRlbmFudE1lbWJlchIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEiwKBmFjY2VzcxgCIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyKiAQoZTGlzdFRlbmFudE1lbWJlcnNSZXNwb25zZRIqCgdtZW1iZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuVGVuYW50TWVtYmVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKDAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIPCgdyb2xlX2lkGAUgASgJQg0KC19wcm9qZWN0X2lkSgQIBBAFUgRyb2xlIkMKE0dyYW50QWNjZXNzUmVzcG9uc2USLAoGYWNjZXNzGAEgASgLMhwuaWRlbnRpdHkudjEuQWRtaW5Vc2VyQWNjZXNzIigKE1Jldm9rZUFjY2Vzc1JlcXVlc3QSEQoJYWNjZXNzX2lkGAEgASgJIicKFFJldm9rZUFjY2Vzc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi3AUKEkltcGVyc29uYXRpb25HcmFudBIKCgJpZBgBIAEoCRISCgpncmFudGVlX2lkGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpncmFudGVkX2J5GAQgASgJEg4KBnJlYXNvbhgFIAEoCRIuCgpleHBpcmVzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpyZXZva2VkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEhcKCnJldm9rZWRfYnkYCSABKAlIAYgBARI1CgZzdGF0dXMYCiABKA4yJS5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnRTdGF0dXMSQQoPYXBwcm92YWxfbWV0aG9kGAsgASgOMiguaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkFwcHJvdmFsTWV0aG9kEjQKC2FwcHJvdmVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEhgKC2FwcHJvdmVkX2J5GA0gASgJSAOIAQESOwoScmVxdWVzdF9leHBpcmVzX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEh8KF2FkbWluaXN0cmF0b3JzX25vdGlmaWVkGA8gASgFEhMKC3RlbmFudF9uYW1lGBAgASgJEhgKEGdyYW50ZWRfYnlfZW1haWwYESABKAkSFQoNZ3JhbnRlZV9lbWFpbBgSIAEoCUINCgtfcmV2b2tlZF9hdEINCgtfcmV2b2tlZF9ieUIOCgxfYXBwcm92ZWRfYXRCDgoMX2FwcHJvdmVkX2J5QhUKE19yZXF1ZXN0X2V4cGlyZXNfYXQiQAobUmVxdWVzdEltcGVyc29uYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkiTgocUmVxdWVzdEltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCI9ChtBcHByb3ZlSW1wZXJzb25hdGlvblJlcXVlc3QSEAoIZ3JhbnRfaWQYASABKAkSDAoEY29kZRgCIAEoCSJOChxBcHByb3ZlSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IjoKGERlbnlJbXBlcnNvbmF0aW9uUmVxdWVzdBIQCghncmFudF9pZBgBIAEoCRIMCgRjb2RlGAIgASgJIksKGURlbnlJbXBlcnNvbmF0aW9uUmVzcG9uc2USLgoFZ3JhbnQYASABKAsyHy5pZGVudGl0eS52MS5JbXBlcnNvbmF0aW9uR3JhbnQiWgoeQnJlYWtHbGFzc0ltcGVyc29uYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkSFQoNanVzdGlmaWNhdGlvbhgDIAEoCSJRCh9CcmVha0dsYXNzSW1wZXJzb25hdGlvblJlc3BvbnNlEi4KBWdyYW50GAEgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50IigKGlJldm9rZUltcGVyc29uYXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIk0KG1Jldm9rZUltcGVyc29uYXRpb25SZXNwb25zZRIuCgVncmFudBgBIAEoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudCL7AQoeTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXF1ZXN0EhcKCmdyYW50ZWVfaWQYASABKAlIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBARITCgthY3RpdmVfb25seRgDIAEoCBISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQg0KC19ncmFudGVlX2lkQgwKCl90ZW5hbnRfaWRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq0BCh9MaXN0SW1wZXJzb25hdGlvbkdyYW50c1Jlc3BvbnNlEi8KBmdyYW50cxgBIAMoCzIfLmlkZW50aXR5LnYxLkltcGVyc29uYXRpb25HcmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iTwoSRW50ZXJUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIXCgpwcm9qZWN0X2lkGAIgASgJSACIAQFCDQoLX3Byb2plY3RfaWQivwEKE0VudGVyVGVuYW50UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0EjMKBWdyYW50GAIgASgLMh8uaWRlbnRpdHkudjEuSW1wZXJzb25hdGlvbkdyYW50SACIAQFCCAoGX2dyYW50SgQIAxAESgQIBBAFSgQIBRAGUg1jb250ZW50X3JlYWNoUg1wZW5kaW5nX2dyYW50Ugt0ZW5hbnRfbmFtZSKyAQoaTWludE1jcFdvcmtpbmdUb2tlblJlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESFwoKcHJvamVjdF9pZBgCIAEoCUgBiAEBEhYKCXJlYWRfb25seRgDIAEoCEgCiAEBEhQKB3N1cmZhY2UYBCABKAlIA4gBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQgwKCl9yZWFkX29ubHlCCgoIX3N1cmZhY2UiyAEKG01pbnRNY3BXb3JraW5nVG9rZW5SZXNwb25zZRIVCg13b3JraW5nX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhAKCHJlc291cmNlGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRITCgt0ZW5hbnRfbmFtZRgFIAEoCRISCgpwcm9qZWN0X2lkGAYgASgJEhQKDHByb2plY3RfbmFtZRgHIAEoCSJKChVDcmVhdGVDdXN0b21lclJlcXVlc3QSDQoFZW1haWwYASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiQQoWQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRInCghjdXN0b21lchgBIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIiAKEkdldEN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCSI+ChNHZXRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIisgEKFVVwZGF0ZUN1c3RvbWVyUmVxdWVzdBIKCgJpZBgBIAEoCRISCgVlbWFpbBgCIAEoCUgAiAEBEjAKBnN0YXR1cxgDIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzSAGIAQESHQoQcHJlZmVycmVkX2xvY2FsZRgEIAEoCUgCiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzQhMKEV9wcmVmZXJyZWRfbG9jYWxlIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIu4BChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgCEANKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSBnN0YXR1cyKYAQoVTGlzdEN1c3RvbWVyc1Jlc3BvbnNlEiQKBWl0ZW1zGAEgAygLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIiQKFlN1c3BlbmRDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiQgoXU3VzcGVuZEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJTChVNZXJnZUN1c3RvbWVyc1JlcXVlc3QSEwoLc3Vydml2b3JfaWQYASABKAkSFAoMZHVwbGljYXRlX2lkGAIgASgJEg8KB2RyeV9ydW4YAyABKAgiaAoWTWVyZ2VDdXN0b21lcnNSZXNwb25zZRIPCgdyZXRpcmVkGAEgASgIEgwKBG5vb3AYAiABKAgSLwoFbW92ZWQYAyABKAsyIC5pZGVudGl0eS52MS5NZXJnZUN1c3RvbWVyc01vdmVkIsEBChNNZXJnZUN1c3RvbWVyc01vdmVkEg8KB3JlY29yZHMYASABKAUSDQoFZmlsZXMYAiABKAUSGwoTcHJvdmlkZXJfaWRlbnRpdGllcxgDIAEoBRIQCghwcm9maWxlcxgEIAEoBRIbChNzZWdtZW50X21lbWJlcnNoaXBzGAYgASgFEhgKEHJvbGVfYXNzaWdubWVudHMYByABKAUSHgoWcmVmcmVzaF90b2tlbnNfcmV2b2tlZBgIIAEoBUoECAUQBiI+ChpTZXRDdXN0b21lclBhc3N3b3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiLgobU2V0Q3VzdG9tZXJQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi3AEKH0NyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKaW52aXRlZF9ieRgCIAEoCUgAiAEBEhQKB21lc3NhZ2UYAyABKAlIAYgBARIXCgpzZW5kX2VtYWlsGAQgASgISAKIAQESIAoTYWNjZXB0X3VybF9vdmVycmlkZRgFIAEoCUgDiAEBQg0KC19pbnZpdGVkX2J5QgoKCF9tZXNzYWdlQg0KC19zZW5kX2VtYWlsQhYKFF9hY2NlcHRfdXJsX292ZXJyaWRlInoKIENyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24SEgoKYWNjZXB0X3VybBgCIAEoCRINCgV0b2tlbhgDIAEoCSL4AQoeTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAIQA0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldFIGc2VhcmNoIqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiQAoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJEhsKE293bmVyX2FkbWluX3VzZXJfaWQYAiABKAkiOwoUQ3JlYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IlIKFkNyZWF0ZVdvcmtzcGFjZVJlcXVlc3QSDAoEbmFtZRgBIAEoCRIZCgxwcm9qZWN0X25hbWUYAiABKAlIAIgBAUIPCg1fcHJvamVjdF9uYW1lIm0KF0NyZWF0ZVdvcmtzcGFjZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudBItCg9kZWZhdWx0X3Byb2plY3QYAiABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih4KEEdldFRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiOAoRR2V0VGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IngKE1VwZGF0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEi4KBnN0YXR1cxgDIAEoDjIZLmlkZW50aXR5LnYxLlRlbmFudFN0YXR1c0gBiAEBQgcKBV9uYW1lQgkKB19zdGF0dXMiOwoUVXBkYXRlVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IssBCiRTZXRUZW5hbnRQcm9qZWN0TGltaXRPdmVycmlkZVJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEiMKFnByb2plY3RfbGltaXRfb3ZlcnJpZGUYAiABKANIAIgBARIsCh9wcm9qZWN0X2xpbWl0X292ZXJyaWRlX2JhbmRfbWF4GAMgASgDSAGIAQFCGQoXX3Byb2plY3RfbGltaXRfb3ZlcnJpZGVCIgogX3Byb2plY3RfbGltaXRfb3ZlcnJpZGVfYmFuZF9tYXgiuQEKJVNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlUmVzcG9uc2USIwoWcHJvamVjdF9saW1pdF9vdmVycmlkZRgBIAEoA0gAiAEBEiwKH3Byb2plY3RfbGltaXRfb3ZlcnJpZGVfYmFuZF9tYXgYAiABKANIAYgBAUIZChdfcHJvamVjdF9saW1pdF9vdmVycmlkZUIiCiBfcHJvamVjdF9saW1pdF9vdmVycmlkZV9iYW5kX21heCJLCiVTZXRUZW5hbnRBbm9ueW1vdXNOb3Rlc0VuYWJsZWRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIPCgdlbmFibGVkGAIgASgIIkoKJlNldFRlbmFudEFub255bW91c05vdGVzRW5hYmxlZFJlc3BvbnNlEiAKGGFub255bW91c19ub3Rlc19kaXNhYmxlZBgBIAEoCCLvAQoRVGVuYW50RW50aXRsZW1lbnQSEQoJdGVuYW50X2lkGAEgASgJEhMKC2ZlYXR1cmVfa2V5GAIgASgJEjIKBXN0YXRlGAMgASgOMiMuaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIOCgZzZXRfYnkYBCABKAkSDgoGcmVhc29uGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokBChtTZXRUZW5hbnRFbnRpdGxlbWVudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhMKC2ZlYXR1cmVfa2V5GAIgASgJEjIKBXN0YXRlGAMgASgOMiMuaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIOCgZyZWFzb24YBCABKAkiaAocU2V0VGVuYW50RW50aXRsZW1lbnRSZXNwb25zZRI4CgtlbnRpdGxlbWVudBgBIAEoCzIeLmlkZW50aXR5LnYxLlRlbmFudEVudGl0bGVtZW50SACIAQFCDgoMX2VudGl0bGVtZW50IjIKHUxpc3RUZW5hbnRFbnRpdGxlbWVudHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJWCh5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVzcG9uc2USNAoMZW50aXRsZW1lbnRzGAEgAygLMh4uaWRlbnRpdHkudjEuVGVuYW50RW50aXRsZW1lbnQi3gEKEkxpc3RUZW5hbnRzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQilAEKE0xpc3RUZW5hbnRzUmVzcG9uc2USIgoFaXRlbXMYASADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIiEKE0RlbGV0ZVRlbmFudFJlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlVGVuYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKiCQoUQ3JlYXRlUHJvamVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEhEKCXRlbmFudF9pZBgDIAEoCRIgChNkZWZhdWx0X2xvY2FsZV9jb2RlGAQgASgJSAGIAQESKAobZGVmYXVsdF9sb2NhbGVfZGlzcGxheV9uYW1lGAUgASgJSAKIAQESJwoaZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWUYBiABKAlIA4gBARIiChVkZWZhdWx0X2xvY2FsZV9pc19ydGwYByABKAhIBIgBARIZCgxkaXNwbGF5X25hbWUYCiABKAlIBYgBARIVCghsb2dvX3VybBgLIAEoCUgGiAEBEhoKDXByaW1hcnlfY29sb3IYDCABKAlIB4gBARIWCglmcm9tX25hbWUYDSABKAlICIgBARIVCghyZXBseV90bxgOIAEoCUgJiAEBEhoKDXN1cHBvcnRfZW1haWwYDyABKAlICogBARIZCgxhcHBfYmFzZV91cmwYECABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGB8gASgISA2IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYICABKAhIDogBARIxCgtzaWdudXBfbW9kZRghIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGVID4gBARJBChNzaWdudXBfcmVzdHJpY3Rpb25zGCIgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGCMgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYJCABKAhIEogBAUIOCgxfZGVzY3JpcHRpb25CFgoUX2RlZmF1bHRfbG9jYWxlX2NvZGVCHgocX2RlZmF1bHRfbG9jYWxlX2Rpc3BsYXlfbmFtZUIdChtfZGVmYXVsdF9sb2NhbGVfbmF0aXZlX25hbWVCGAoWX2RlZmF1bHRfbG9jYWxlX2lzX3J0bEIPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQiEKH19jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWRCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkQg4KDF9zaWdudXBfbW9kZUIWChRfc2lnbnVwX3Jlc3RyaWN0aW9uc0IbChlfbm90ZV9zY3JlZW5zaG90c19lbmFibGVkQhoKGF9hbm9ueW1vdXNfbm90ZXNfZW5hYmxlZEoECB4QH1IXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLBCAoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEhcKCmZyb21fZW1haWwYESABKAlICogBARIiChVyZXNlbmRfa2V5X3NlY3JldF9yZWYYEiABKAlIC4gBARIrCh5jdXN0b21lcl93ZWxjb21lX2VtYWlsX2VuYWJsZWQYFCABKAhIDIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGB8gASgISA2IAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYICABKAhIDogBARIxCgtzaWdudXBfbW9kZRghIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGVID4gBARJBChNzaWdudXBfcmVzdHJpY3Rpb25zGCIgASgLMh8uaWRlbnRpdHkudjEuU2lnbnVwUmVzdHJpY3Rpb25zSBCIAQESJQoYbm90ZV9zY3JlZW5zaG90c19lbmFibGVkGCMgASgISBGIAQESJAoXYW5vbnltb3VzX25vdGVzX2VuYWJsZWQYJCABKAhIEogBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX3N0YXR1c0IPCg1fZGlzcGxheV9uYW1lQgsKCV9sb2dvX3VybEIQCg5fcHJpbWFyeV9jb2xvckIMCgpfZnJvbV9uYW1lQgsKCV9yZXBseV90b0IQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQg0KC19mcm9tX2VtYWlsQhgKFl9yZXNlbmRfa2V5X3NlY3JldF9yZWZCIQofX2N1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWRCDgoMX3NpZ251cF9tb2RlQhYKFF9zaWdudXBfcmVzdHJpY3Rpb25zQhsKGV9ub3RlX3NjcmVlbnNob3RzX2VuYWJsZWRCGgoYX2Fub255bW91c19ub3Rlc19lbmFibGVkSgQIHhAfUhdjdXN0b21lcl9zaWdudXBfZW5hYmxlZCI+ChVVcGRhdGVQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3Qi8gEKE0xpc3RQcm9qZWN0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoUTGlzdFByb2plY3RzUmVzcG9uc2USIwoFaXRlbXMYASADKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIiChREZWxldGVQcm9qZWN0UmVxdWVzdBIKCgJpZBgBIAEoCSIoChVEZWxldGVQcm9qZWN0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChNQdXJnZVByb2plY3RSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEg4KBnJlYXNvbhgDIAEoCSInChRQdXJnZVByb2plY3RSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KGEdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiQgoZR2V0RGVmYXVsdFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCIuChhTZXREZWZhdWx0UHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJCChlTZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0IpkBChlDcmVhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhkKEW92ZXJyaWRlc19hbGxvd2VkGAUgASgIEh4KEXNvdXJjZV9wcm9qZWN0X2lkGAQgASgJSACIAQFCFAoSX3NvdXJjZV9wcm9qZWN0X2lkSgQIAxAEUgRtb2RlIkYKGkNyZWF0ZVByb2plY3RHcm91cFJlc3BvbnNlEigKBWdyb3VwGAEgASgLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwIiQKFkdldFByb2plY3RHcm91cFJlcXVlc3QSCgoCaWQYASABKAkiQwoXR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USKAoFZ3JvdXAYASABKAsyGS5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXAiLQoYTGlzdFByb2plY3RHcm91cHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJUChlMaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwEg0KBXRvdGFsGAIgASgFIrsBChlVcGRhdGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIeChFzb3VyY2VfcHJvamVjdF9pZBgDIAEoCUgBiAEBEh4KEW92ZXJyaWRlc19hbGxvd2VkGAUgASgISAKIAQFCBwoFX25hbWVCFAoSX3NvdXJjZV9wcm9qZWN0X2lkQhQKEl9vdmVycmlkZXNfYWxsb3dlZEoECAQQBVIEbW9kZSJGChpVcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRIoCgVncm91cBgBIAEoCzIZLmlkZW50aXR5LnYxLlByb2plY3RHcm91cCInChlEZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0EgoKAmlkGAEgASgJIi0KGkRlbGV0ZVByb2plY3RHcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAginQEKGEFkZFByb2plY3RUb0dyb3VwUmVxdWVzdBIQCghncm91cF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEjEKBHJvbGUYAyABKA4yIy5pZGVudGl0eS52MS5Qcm9qZWN0R3JvdXBNZW1iZXJSb2xlEhgKC3N0YWdlX29yZGVyGAQgASgFSACIAQFCDgoMX3N0YWdlX29yZGVyIkwKGUFkZFByb2plY3RUb0dyb3VwUmVzcG9uc2USLwoGbWVtYmVyGAEgASgLMh8uaWRlbnRpdHkudjEuUHJvamVjdEdyb3VwTWVtYmVyIkUKHVJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXF1ZXN0EhAKCGdyb3VwX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiMQoeUmVtb3ZlUHJvamVjdEZyb21Hcm91cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgisAMKD1Byb2plY3RCcmFuZGluZxIZCgxkaXNwbGF5X25hbWUYASABKAlIAIgBARIVCghsb2dvX3VybBgCIAEoCUgBiAEBEhoKDXByaW1hcnlfY29sb3IYAyABKAlIAogBARIWCglmcm9tX25hbWUYBCABKAlIA4gBARIaCg1zdXBwb3J0X2VtYWlsGAUgASgJSASIAQESGQoMYXBwX2Jhc2VfdXJsGAYgASgJSAWIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgGiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAeIAQFCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUIQCg5fc3VwcG9ydF9lbWFpbEIPCg1fYXBwX2Jhc2VfdXJsQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEoECAcQCFIXY3VzdG9tZXJfc2lnbnVwX2VuYWJsZWQipgEKE1Byb3Zpc2lvblN0ZXBTdGF0dXMSFwoPY3JlYXRlZF9wcm9qZWN0GAEgASgIEhQKDGJyYW5kaW5nX3NldBgCIAEoCBIVCg1hcHBfaW5zdGFsbGVkGAMgASgIEhYKDnNlY3JldF93cml0dGVuGAQgASgIEhQKDGdyb3VwX2pvaW5lZBgFIAEoCBIbChNhbGxvd19saXN0X2V4dGVuZGVkGAYgASgIIrkDChdQcm92aXNpb25Qcm9qZWN0UmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhAKCGdyb3VwX2lkGAMgASgJEgwKBG5hbWUYBCABKAkSMwoIYnJhbmRpbmcYBSABKAsyHC5pZGVudGl0eS52MS5Qcm9qZWN0QnJhbmRpbmdIAIgBARITCgZhcHBfaWQYBiABKAlIAYgBARIdChBhcHBfc2VjcmV0X2xhYmVsGAcgASgJSAKIAQESHQoQYXBwX3NlY3JldF92YWx1ZRgIIAEoCUgDiAEBEhkKDG1hbmlmZXN0X3VybBgJIAEoCUgEiAEBEjIKDGFwcF9tYXBwaW5ncxgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIaChJhbGxvd19saXN0X2tleV9pZHMYCyADKAlCCwoJX2JyYW5kaW5nQgkKB19hcHBfaWRCEwoRX2FwcF9zZWNyZXRfbGFiZWxCEwoRX2FwcF9zZWNyZXRfdmFsdWVCDwoNX21hbmlmZXN0X3VybEIPCg1fYXBwX21hcHBpbmdzIrMBChhQcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USFAoMcHJvdmlzaW9uX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSFgoOc2NoZW1hX3ZlcnNpb24YAyABKAkSDgoGc3RhdHVzGAUgASgJEi8KBXN0ZXBzGAYgASgLMiAuaWRlbnRpdHkudjEuUHJvdmlzaW9uU3RlcFN0YXR1c0oECAQQBVIOZGVwbG95X3ZlcnNpb24iMQoZR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBIUCgxwcm92aXNpb25faWQYASABKAkitQEKGkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEhQKDHByb3Zpc2lvbl9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhYKDnNjaGVtYV92ZXJzaW9uGAMgASgJEg4KBnN0YXR1cxgFIAEoCRIvCgVzdGVwcxgGIAEoCzIgLmlkZW50aXR5LnYxLlByb3Zpc2lvblN0ZXBTdGF0dXNKBAgEEAVSDmRlcGxveV92ZXJzaW9uIr0BChdDcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSEwoLcHJvamVjdF9pZHMYAyADKAkSLAoLaW52aXRlX3R5cGUYBSABKA4yFy5pZGVudGl0eS52MS5JbnZpdGVUeXBlEhQKB21lc3NhZ2UYBiABKAlIAIgBARIPCgdyb2xlX2lkGAcgASgJQgoKCF9tZXNzYWdlSgQIBBAFUgRyb2xlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiL1AQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBCgxNeUludml0YXRpb24SKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSGgoNaW52aXRlcl9lbWFpbBgDIAEoCUgAiAEBEhkKDGludml0ZXJfbmFtZRgEIAEoCUgBiAEBQhAKDl9pbnZpdGVyX2VtYWlsQg8KDV9pbnZpdGVyX25hbWUiGgoYTGlzdE15SW52aXRhdGlvbnNSZXF1ZXN0IksKGUxpc3RNeUludml0YXRpb25zUmVzcG9uc2USLgoLaW52aXRhdGlvbnMYASADKAsyGS5pZGVudGl0eS52MS5NeUludml0YXRpb24iMAoXUmV2b2tlSW52aXRhdGlvblJlcXVlc3QSFQoNaW52aXRhdGlvbl9pZBgBIAEoCSIrChhSZXZva2VJbnZpdGF0aW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJMChdBY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJUChhBY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlchISCgpzZXNzaW9uX2lkGAIgASgJIioKGVZhbGlkYXRlSW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkidAoaVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USKwoKaW52aXRhdGlvbhgBIAEoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SEwoLdGVuYW50X25hbWUYAiABKAkSFAoMaW52aXRlcl9uYW1lGAMgASgJIssCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQESEwoLcHJvamVjdF9pZHMYCSADKAlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvIBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gipAEKGUxpc3RBdXRoUHJvdmlkZXJzUmVzcG9uc2USLAoJcHJvdmlkZXJzGAEgAygLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkYKF0dldEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIoECChlDcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgdlbmFibGVkGAUgASgISACIAQESFwoKaXNfZGVmYXVsdBgGIAEoCEgBiAEBEhUKCHByaW9yaXR5GAcgASgFSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5QgwKCl9jb25maWdfaWQiSQoaQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIi6gEKGVVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiwKBmNvbmZpZxgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAQgASgISAKIAQESFwoKaXNfZGVmYXVsdBgFIAEoCEgDiAEBEhUKCHByaW9yaXR5GAYgASgFSASIAQFCBwoFX25hbWVCCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEINCgtfaXNfZGVmYXVsdEILCglfcHJpb3JpdHkiSQoaVXBkYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiJwoZRGVsZXRlQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIigKGlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJIoABChtQdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXISNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiKgocVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJMCh1VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciIxCiNHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJRCiRHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzItoCChNBdXRoUHJvdmlkZXJWZXJzaW9uEgoKAmlkGAEgASgJEhgKEGF1dGhfcHJvdmlkZXJfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIrCh1HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJTCh5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USMQoHdmVyc2lvbhgBIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iswEKH0xpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1JlcXVlc3QSGAoQYXV0aF9wcm92aWRlcl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKxAQogTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USMgoIdmVyc2lvbnMYASADKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvCiFSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIogBCiJSZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjUKC25ld192ZXJzaW9uGAIgASgLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbiKoAQoiU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJSCiNTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciI3CilDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJZCipDYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiTAocRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVxdWVzdBIaCg1wbGF0Zm9ybV9sYW5lGAEgASgISACIAQFCEAoOX3BsYXRmb3JtX2xhbmUiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIjAKHk1pbnRTZXJ2aWNlVG9rZW5TY29wZU5hcnJvd2luZxIOCgZzY29wZXMYASADKAkicAoXTWludFNlcnZpY2VUb2tlblJlcXVlc3QSDwoHcHVycG9zZRgBIAEoCRJECg9zY29wZV9uYXJyb3dpbmcYAiABKAsyKy5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuU2NvcGVOYXJyb3dpbmciTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSLCAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBEh0KEHByZWZlcnJlZF9sb2NhbGUYBCABKAlIA4gBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhMKEV9wcmVmZXJyZWRfbG9jYWxlIj8KF1VwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIizgEKHUxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXF1ZXN0EhIKBWZpcnN0GAEgASgFSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARIRCgRsYXN0GAMgASgFSAKIAQESEwoGYmVmb3JlGAQgASgJSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlQggKBl93aGVyZSKNAQoPT0F1dGhDb25uZWN0aW9uEhAKCHByb3ZpZGVyGAEgASgJEhgKEHByb3ZpZGVyX3VzZXJfaWQYAiABKAkSEgoFZW1haWwYAyABKAlIAIgBARIwCgxjb25uZWN0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl9lbWFpbCKuAQoeTGlzdE15T0F1dGhDb25uZWN0aW9uc1Jlc3BvbnNlEjEKC2Nvbm5lY3Rpb25zGAEgAygLMhwuaWRlbnRpdHkudjEuT0F1dGhDb25uZWN0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIuChpVbmxpbmtPQXV0aFByb3ZpZGVyUmVxdWVzdBIQCghwcm92aWRlchgBIAEoCSIuChtVbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIuCh1DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIzCh5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIo8BChtDb21wbGV0ZUFjY291bnRTZXR1cFJlcXVlc3QSFwoKZmlyc3RfbmFtZRgBIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgCIAEoCUgBiAEBEhUKCHBhc3N3b3JkGAMgASgJSAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUILCglfcGFzc3dvcmQiWwocQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhkKDHJlZGlyZWN0X3VybBgCIAEoCUgAiAEBQg8KDV9yZWRpcmVjdF91cmwiLQoaQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCSIuChtDcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChpSZXNlbmRBY2NvdW50QWNjZXNzUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIroBChtSZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBI7CgRraW5kGAIgASgOMi0uaWRlbnRpdHkudjEuUmVzZW5kQWNjb3VudEFjY2Vzc1Jlc3BvbnNlLktpbmQiTQoES2luZBIUChBLSU5EX1VOU1BFQ0lGSUVEEAASFgoSS0lORF9BQ0NPVU5UX1NFVFVQEAESFwoTS0lORF9QQVNTV09SRF9SRVNFVBACIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMQocUmVxdWVzdFRlbmFudERlbGV0aW9uUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiRAodUmVxdWVzdFRlbmFudERlbGV0aW9uUmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiQKIkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3Qi2wEKGEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIhChluYXRpdmVfbWFuYWdlbWVudF9lbmFibGVkGAEgASgIEiIKFWV4dGVybmFsX3Byb3ZpZGVyX3VybBgCIAEoCUgAiAEBEiMKFmV4dGVybmFsX3Byb3ZpZGVyX25hbWUYAyABKAlIAYgBARITCgZyZWFzb24YBCABKAlIAogBAUIYChZfZXh0ZXJuYWxfcHJvdmlkZXJfdXJsQhkKF19leHRlcm5hbF9wcm92aWRlcl9uYW1lQgkKB19yZWFzb24iXAojR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USNQoGc3RhdHVzGAEgASgLMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzIigKFVZhbGlkYXRlQXBpS2V5UmVxdWVzdBIPCgdhcGlfa2V5GAEgASgJIoMCChZWYWxpZGF0ZUFwaUtleVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSEAoIa2V5X3R5cGUYBSABKAkSDgoGc2NvcGVzGAYgAygJEhYKDmFsbG93ZWRfbW9kZWxzGAcgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgIIAMoCRIbChNyYXRlX2xpbWl0X3Blcl9ob3VyGAkgASgFEhMKC3Byb2plY3RfaWRzGAogAygJEiAKGHBsYW5fcmF0ZV9saW1pdF9wZXJfaG91chgLIAEoBSI3ChRDdXN0b21lckxvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSJtChVDdXN0b21lckxvZ2luUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ/ChdDdXN0b21lclJlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIyCgxwcm9maWxlX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCDwoNX3Byb2ZpbGVfZGF0YSJwChhDdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0ChtDdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJLChxDdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIioKGUN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkiKgoaQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USDAoEc2VudBgBIAEoCCI7ChhDdXN0b21lclZlcmlmeU9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIb3RwX2NvZGUYAiABKAkicQoZQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKI0N1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKJEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIMCgRzZW50GAEgASgIIkMKHEN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIjAKHUN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiVAoeVXBkYXRlTXlDdXN0b21lclByb2ZpbGVSZXF1ZXN0Eh0KEHByZWZlcnJlZF9sb2NhbGUYASABKAlIAIgBAUITChFfcHJlZmVycmVkX2xvY2FsZSJKCh9VcGRhdGVNeUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiTQoWRGVsZXRlTXlBY2NvdW50UmVxdWVzdBIVCghwYXNzd29yZBgBIAEoCUgAiAEBEg8KB2NvbmZpcm0YAiABKAhCCwoJX3Bhc3N3b3JkIloKF0RlbGV0ZU15QWNjb3VudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSFwoPcmVjb3Jkc19kZWxldGVkGAIgASgDEhUKDWZpbGVzX2RlbGV0ZWQYAyABKAMi2QEKGVN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJEhAKCGlkX3Rva2VuGAUgASgJEg4KBnNjb3BlcxgGIAEoCRIzCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IhwKGlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlIoMBChlTdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIWCglyZXR1cm5fdG8YAiABKAlIAIgBARIZCgxyZWRpcmVjdF91cmkYAyABKAlIAYgBAUIMCgpfcmV0dXJuX3RvQg8KDV9yZWRpcmVjdF91cmkiMgoaU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIk8KGkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBXN0YXRlGAMgASgJIm4KG0ZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCSKCAQohU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIUCgxyZWRpcmVjdF91cmkYAiABKAkSDgoGc2NvcGVzGAMgAygJEhYKCXJldHVybl90bxgEIAEoCUgAiAEBQgwKCl9yZXR1cm5fdG8iOgoiU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiQwokQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EgwKBGNvZGUYASABKAkSDQoFc3RhdGUYAiABKAkingEKJUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSFgoJcmV0dXJuX3RvGAUgASgJSACIAQFCDAoKX3JldHVybl90byJ/Ch5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI3Ch9TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJACiFDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSK9AQoiQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIdChVpc19maXJzdF9wYXJ0eV9jbGllbnQYBSABKAgSFgoJcmV0dXJuX3RvGAYgASgJSACIAQFCDAoKX3JldHVybl90byImChJCZWdpblN0ZXBVcFJlcXVlc3QSEAoIcGFzc3dvcmQYASABKAkiZAoTQmVnaW5TdGVwVXBSZXNwb25zZRIOCgZoYW5kbGUYASABKAkSEAoId2ViYXV0aG4YAiABKAgSDAoEdG90cBgDIAEoCBIdChV3ZWJhdXRobl9vcHRpb25zX2pzb24YBCABKAkiWwoVQ29tcGxldGVTdGVwVXBSZXF1ZXN0Eg4KBmhhbmRsZRgBIAEoCRIfChd3ZWJhdXRobl9hc3NlcnRpb25fanNvbhgCIAEoCRIRCgl0b3RwX2NvZGUYAyABKAkiOQoWQ29tcGxldGVTdGVwVXBSZXNwb25zZRISCgpzdGVwcGVkX3VwGAEgASgIEgsKA2FtchgCIAMoCSI9ChlCZWdpbk1mYUVucm9sbG1lbnRSZXF1ZXN0EhAKCHBhc3N3b3JkGAEgASgJEg4KBm1ldGhvZBgCIAEoCSJxChpCZWdpbk1mYUVucm9sbG1lbnRSZXNwb25zZRIOCgZoYW5kbGUYASABKAkSHQoVd2ViYXV0aG5fb3B0aW9uc19qc29uGAIgASgJEhMKC3RvdHBfc2VjcmV0GAMgASgJEg8KB3RvdHBfcXIYBCABKAkiegocQ29tcGxldGVNZmFFbnJvbGxtZW50UmVxdWVzdBIOCgZoYW5kbGUYASABKAkSIQoZd2ViYXV0aG5fYXR0ZXN0YXRpb25fanNvbhgCIAEoCRIRCgl0b3RwX2NvZGUYAyABKAkSFAoMZGlzcGxheV9uYW1lGAQgASgJIjEKHUNvbXBsZXRlTWZhRW5yb2xsbWVudFJlc3BvbnNlEhAKCGVucm9sbGVkGAEgASgIIkQKF0dldFByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCSKtAQoYR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEhAKCGlkX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAEoCRIzCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IjIKG0RlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSIeChxEZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlInQKGFJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kcxIVCghwYXNzd29yZBgBIAEoCEgAiAEBEhAKA290cBgCIAEoCEgBiAEBEhoKEmRpc2FibGVkX3Byb3ZpZGVycxgDIAMoCUILCglfcGFzc3dvcmRCBgoEX290cCLqBAoMUmVseWluZ1BhcnR5EgoKAmlkGAEgASgJEhYKDnByaW5jaXBhbF9raW5kGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBARIRCgljbGllbnRfaWQYBSABKAkSDAoEbmFtZRgGIAEoCRIVCg1yZWRpcmVjdF91cmlzGAcgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAggAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAkgASgIEhQKDHJlcXVpcmVzX21mYRgKIAEoCBJBCg1sb2dpbl9tZXRob2RzGAsgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESFwoKY3JlYXRlZF9ieRgMIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2Rpc2FibGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhsKDnBvc3RfbG9naW5fdXJsGBAgASgJSAWIAQESFwoPYWxsb3dlZF9vcmlnaW5zGBEgAygJQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCDQoLX2NyZWF0ZWRfYnlCDgoMX2Rpc2FibGVkX2F0QhEKD19wb3N0X2xvZ2luX3VybCL5AQoZTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARITCgZiZWZvcmUYBSABKAlIA4gBARISCgVmaXJzdBgGIAEoBUgEiAEBEhEKBGxhc3QYByABKAVIBYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoaTGlzdFJlbHlpbmdQYXJ0aWVzUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIkMKFkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIksKF0dldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiJgoTUmVseWluZ1BhcnR5T3JpZ2lucxIPCgdvcmlnaW5zGAEgAygJIp0DChlDcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARIRCgljbGllbnRfaWQYBCABKAkSDAoEbmFtZRgFIAEoCRIVCg1yZWRpcmVjdF91cmlzGAYgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAcgAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAggASgIEhQKDHJlcXVpcmVzX21mYRgJIAEoCBJBCg1sb2dpbl9tZXRob2RzGAogASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCyABKAlIA4gBARIXCg9hbGxvd2VkX29yaWdpbnMYDCADKAlCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0IRCg9fcG9zdF9sb2dpbl91cmwiTgoaQ3JlYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSKWAwoZVXBkYXRlUmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSEQoEbmFtZRgDIAEoCUgAiAEBEhUKDXJlZGlyZWN0X3VyaXMYBCADKAkSFgoOYWxsb3dlZF9zY29wZXMYBSADKAkSGQoMcmVxdWlyZXNfbWZhGAYgASgISAGIAQESQQoNbG9naW5fbWV0aG9kcxgHIAEoCzIlLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kc0gCiAEBEhsKDnBvc3RfbG9naW5fdXJsGAggASgJSAOIAQESPgoPYWxsb3dlZF9vcmlnaW5zGAkgASgLMiAuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5T3JpZ2luc0gEiAEBQgcKBV9uYW1lQg8KDV9yZXF1aXJlc19tZmFCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsQhIKEF9hbGxvd2VkX29yaWdpbnMiTgoaVXBkYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USMAoNcmVseWluZ19wYXJ0eRgBIAEoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eSJHChpEaXNhYmxlUmVseWluZ1BhcnR5UmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkiHQobRGlzYWJsZVJlbHlpbmdQYXJ0eVJlc3BvbnNlIoADCgxDdXN0b21Eb21haW4SCgoCaWQYASABKAkSGAoQcmVseWluZ19wYXJ0eV9pZBgCIAEoCRIMCgRraW5kGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEhAKCGhvc3RuYW1lGAYgASgJEg4KBnN0YXR1cxgHIAEoCRIRCgl0eHRfdG9rZW4YCCABKAkSNAoLdmVyaWZpZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESFwoKY3JlYXRlZF9ieRgKIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCmFwcF90YXJnZXQYDSABKAlCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5In8KG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkSEgoKcHJvamVjdF9pZBgEIAEoCRISCgphcHBfdGFyZ2V0GAUgASgJIlAKHFJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiInChlWZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0EgoKAmlkGAEgASgJImAKGlZlcmlmeUN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4SEAoIdmVyaWZpZWQYAiABKAgiJwoZRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSIcChpEZWxldGVDdXN0b21Eb21haW5SZXNwb25zZSJCCiBHZXRDdXN0b21Eb21haW5CeUhvc3RuYW1lUmVxdWVzdBIQCghob3N0bmFtZRgBIAEoCRIMCgRraW5kGAIgASgJIlUKIUdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluIkgKGExpc3RDdXN0b21Eb21haW5zUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkiRQoZTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiLiAgoPQ3VzdG9tZXJTZXNzaW9uEgoKAmlkGAEgASgJEhMKC2N1c3RvbWVyX2lkGAIgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9zZWVuX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgppcF9hZGRyZXNzGAkgASgJSACIAQESFwoKdXNlcl9hZ2VudBgKIAEoCUgBiAEBEgsKA2FtchgLIAMoCUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudCI3ChtMaXN0Q3VzdG9tZXJTZXNzaW9uc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCSJLChxMaXN0Q3VzdG9tZXJTZXNzaW9uc1Jlc3BvbnNlEisKBWl0ZW1zGAEgAygLMhwuaWRlbnRpdHkudjEuQ3VzdG9tZXJTZXNzaW9uIioKHFJldm9rZUN1c3RvbWVyU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiHwodUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UinQIKEVJlbHlpbmdQYXJ0eUdyYW50EgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJY2xpZW50X2lkGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIXCgpncmFudGVkX2J5GAUgASgJSACIAQESLgoKZ3JhbnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiTQodTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1JlcXVlc3QSGgoNYWRtaW5fdXNlcl9pZBgBIAEoCUgAiAEBQhAKDl9hZG1pbl91c2VyX2lkIl4KHkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50Eg0KBXRvdGFsGAIgASgFIlQKGEdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkiSgoZR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRItCgVncmFudBgBIAEoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50IiwKHlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBIKCgJpZBgBIAEoCSIhCh9SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlItsCCgRSb2xlEgoKAmlkGAEgASgJEjYKDnByaW5jaXBhbF9raW5kGAIgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSEwoLcGVybWlzc2lvbnMYByADKAkSEgoKaXNfZGVmYXVsdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfZGlzYWJsZWRfYXQi+QEKEExpc3RSb2xlc1JlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgDIAEoBUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBEhMKBmJlZm9yZRgGIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUikAEKEUxpc3RSb2xlc1Jlc3BvbnNlEiAKBWl0ZW1zGAEgAygLMhEuaWRlbnRpdHkudjEuUm9sZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHAoOR2V0Um9sZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Um9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIrYBChFDcmVhdGVSb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgiNQoSQ3JlYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIngKEVVwZGF0ZVJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiNQoSVXBkYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIiAKEkRpc2FibGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIVChNEaXNhYmxlUm9sZVJlc3BvbnNlIuQCCg5Sb2xlQXNzaWdubWVudBIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgDIAEoCRIPCgdyb2xlX2lkGAQgASgJEi4KCmdyYW50ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYBiABKAlIAIgBARIzCgpyZXZva2VkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCnJldm9rZWRfYnkYCCABKAlIAogBARIQCghyb2xlX2tleRgJIAEoCRIRCglyb2xlX25hbWUYCiABKAlCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkicgoRQXNzaWduUm9sZVJlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIUCgxwcmluY2lwYWxfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCSJFChJBc3NpZ25Sb2xlUmVzcG9uc2USLwoKYXNzaWdubWVudBgBIAEoCzIbLmlkZW50aXR5LnYxLlJvbGVBc3NpZ25tZW50IikKG1Jldm9rZVJvbGVBc3NpZ25tZW50UmVxdWVzdBIKCgJpZBgBIAEoCSIeChxSZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlIoMCChpMaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEisKBXdoZXJlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCAoGX3doZXJlQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQobTGlzdFJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEioKBWl0ZW1zGAEgAygLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIt4CCg1XYWl0bGlzdEVudHJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESDQoFZW1haWwYBCABKAkSKwoGc3RhdHVzGAUgASgOMhsuaWRlbnRpdHkudjEuV2FpdGxpc3RTdGF0dXMSFwoKZGVjaWRlZF9ieRgGIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCmRlY2lkZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXQiJAoTSm9pbldhaXRsaXN0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSJBChRKb2luV2FpdGxpc3RSZXNwb25zZRIpCgVlbnRyeRgBIAEoCzIaLmlkZW50aXR5LnYxLldhaXRsaXN0RW50cnkiIQofR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVxdWVzdCJQCiBHZXRDdXN0b21lclNpZ251cENvbnRleHRSZXNwb25zZRIsCgtzaWdudXBfbW9kZRgBIAEoDjIXLmlkZW50aXR5LnYxLlNpZ251cE1vZGUiKQoYSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIkYKGUpvaW5BZG1pbldhaXRsaXN0UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IuMBChpMaXN0V2FpdGxpc3RFbnRyaWVzUmVxdWVzdBIwCgZzdGF0dXMYASABKA4yGy5pZGVudGl0eS52MS5XYWl0bGlzdFN0YXR1c0gAiAEBEhAKCHBsYXRmb3JtGAIgASgIEhIKBWZpcnN0GAMgASgFSAGIAQESEgoFYWZ0ZXIYBCABKAlIAogBARIRCgRsYXN0GAUgASgFSAOIAQESEwoGYmVmb3JlGAYgASgJSASIAQFCCQoHX3N0YXR1c0IICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUipQEKG0xpc3RXYWl0bGlzdEVudHJpZXNSZXNwb25zZRIrCgdlbnRyaWVzGAEgAygLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iKQobQXBwcm92ZVdhaXRsaXN0RW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIkkKHEFwcHJvdmVXYWl0bGlzdEVudHJ5UmVzcG9uc2USKQoFZW50cnkYASABKAsyGi5pZGVudGl0eS52MS5XYWl0bGlzdEVudHJ5IiYKGERlbnlXYWl0bGlzdEVudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJGChlEZW55V2FpdGxpc3RFbnRyeVJlc3BvbnNlEikKBWVudHJ5GAEgASgLMhouaWRlbnRpdHkudjEuV2FpdGxpc3RFbnRyeSJwCg9TZWN1cml0eVN1bW1hcnkSFAoMdG90YWxfbG9naW5zGAEgASgFEhUKDWZhaWxlZF9sb2dpbnMYAiABKAUSGAoQYWNjb3VudF9sb2Nrb3V0cxgDIAEoBRIWCg5zdXNwaWNpb3VzX2lwcxgEIAEoBSJuCg9TdXNwaWNpb3VzTG9naW4SDQoFZW1haWwYASABKAkSEAoIaXBfY291bnQYAiABKAUSCwoDaXBzGAMgAygJEi0KCWxhc3Rfc2VlbhgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiYgoLRmFpbGVkTG9naW4SEgoKaWRlbnRpZmllchgBIAEoCRINCgVjb3VudBgCIAEoBRIwCgxsYXN0X2F0dGVtcHQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIm4KDkFjY291bnRMb2Nrb3V0Eg0KBWVtYWlsGAEgASgJEi0KCWxvY2tlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoGcmVhc29uGAMgASgJSACIAQFCCQoHX3JlYXNvbiKtAQoZR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBItCgRmcm9tGAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEisKAnRvGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhYKCXRlbmFudF9pZBgDIAEoCUgCiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfdGVuYW50X2lkIksKGkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkiugEKGkdldFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFgoJdGVuYW50X2lkGAIgASgJSASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQilwEKG0dldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIs4BChZHZXRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBARIWCgl0ZW5hbnRfaWQYAyABKAlIBYgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgwKCl90ZW5hbnRfaWQikAEKF0dldEZhaWxlZExvZ2luc1Jlc3BvbnNlEikKB2VudHJpZXMYASADKAsyGC5pZGVudGl0eS52MS5GYWlsZWRMb2dpbhIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iuQEKGUdldEFjY291bnRMb2Nrb3V0c1JlcXVlc3QSEgoFYWZ0ZXIYAyABKAlIAIgBARITCgZiZWZvcmUYBCABKAlIAYgBARISCgVmaXJzdBgFIAEoBUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARIWCgl0ZW5hbnRfaWQYAiABKAlIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDAoKX3RlbmFudF9pZCKXAQoaR2V0QWNjb3VudExvY2tvdXRzUmVzcG9uc2USLQoIbG9ja291dHMYASADKAsyGy5pZGVudGl0eS52MS5BY2NvdW50TG9ja291dBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8ijQEKH0dldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUIHCgVfZnJvbUIFCgNfdG8imgEKIEdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq4BChxHZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXF1ZXN0Eg8KAmJ5GAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIFCgNfYnlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IlEKIEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEi0KB3N1bW1hcnkYASABKAsyHC5pZGVudGl0eS52MS5TZWN1cml0eVN1bW1hcnkinQEKIUdldFRlbmFudFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRIsCgZsb2dpbnMYASADKAsyHC5pZGVudGl0eS52MS5TdXNwaWNpb3VzTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIpYBCh1HZXRUZW5hbnRGYWlsZWRMb2dpbnNSZXNwb25zZRIpCgdlbnRyaWVzGAEgAygLMhguaWRlbnRpdHkudjEuRmFpbGVkTG9naW4SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvKrEBCg9BZG1pblVzZXJTdGF0dXMSIQodQURNSU5fVVNFUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIcChhBRE1JTl9VU0VSX1NUQVRVU19BQ1RJVkUQARIdChlBRE1JTl9VU0VSX1NUQVRVU19QRU5ESU5HEAISHwobQURNSU5fVVNFUl9TVEFUVVNfU1VTUEVOREVEEAMSHQoZQURNSU5fVVNFUl9TVEFUVVNfREVMRVRFRBAEKokBCg5DdXN0b21lclN0YXR1cxIfChtDVVNUT01FUl9TVEFUVVNfVU5TUEVDSUZJRUQQABIaChZDVVNUT01FUl9TVEFUVVNfQUNUSVZFEAESGwoXQ1VTVE9NRVJfU1RBVFVTX1BFTkRJTkcQAhIdChlDVVNUT01FUl9TVEFUVVNfU1VTUEVOREVEEAMq2QEKDFRlbmFudFN0YXR1cxIdChlURU5BTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobVEVOQU5UX1NUQVRVU19QRU5ESU5HX1NFVFVQEAESGAoUVEVOQU5UX1NUQVRVU19BQ1RJVkUQAhIaChZURU5BTlRfU1RBVFVTX1BBU1RfRFVFEAMSGwoXVEVOQU5UX1NUQVRVU19TVVNQRU5ERUQQBBIbChdURU5BTlRfU1RBVFVTX0NBTkNFTExFRBAFEhkKFVRFTkFOVF9TVEFUVVNfQ0hVUk5FRBAGKmYKDVByb2plY3RTdGF0dXMSHgoaUFJPSkVDVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIZChVQUk9KRUNUX1NUQVRVU19BQ1RJVkUQARIaChZQUk9KRUNUX1NUQVRVU19ERUxFVEVEEAIqjwEKClNpZ251cE1vZGUSGwoXU0lHTlVQX01PREVfVU5TUEVDSUZJRUQQABIWChJTSUdOVVBfTU9ERV9QVUJMSUMQARIaChZTSUdOVVBfTU9ERV9SRVNUUklDVEVEEAISGAoUU0lHTlVQX01PREVfV0FJVExJU1QQAxIWChJTSUdOVVBfTU9ERV9DTE9TRUQQBCqIAQoOV2FpdGxpc3RTdGF0dXMSHwobV0FJVExJU1RfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGwoXV0FJVExJU1RfU1RBVFVTX1BFTkRJTkcQARIcChhXQUlUTElTVF9TVEFUVVNfQVBQUk9WRUQQAhIaChZXQUlUTElTVF9TVEFUVVNfREVOSUVEEAMqjwEKFlByb2plY3RHcm91cE1lbWJlclJvbGUSKQolUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9VTlNQRUNJRklFRBAAEiQKIFBST0pFQ1RfR1JPVVBfTUVNQkVSX1JPTEVfU09VUkNFEAESJAogUFJPSkVDVF9HUk9VUF9NRU1CRVJfUk9MRV9UQVJHRVQQAipnCgpJbnZpdGVUeXBlEhsKF0lOVklURV9UWVBFX1VOU1BFQ0lGSUVEEAASHwobSU5WSVRFX1RZUEVfV09SS1NQQUNFX09XTkVSEAESGwoXSU5WSVRFX1RZUEVfVEVBTV9NRU1CRVIQAiqyAQoQSW52aXRhdGlvblN0YXR1cxIhCh1JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUlOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARIeChpJTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEh0KGUlOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxIdChlJTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQq5wEKGEN1c3RvbWVySW52aXRhdGlvblN0YXR1cxIqCiZDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX1BFTkRJTkcQARInCiNDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19BQ0NFUFRFRBACEiYKIkNVU1RPTUVSX0lOVklUQVRJT05fU1RBVFVTX0VYUElSRUQQAxImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19SRVZPS0VEEAQqtgEKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAhIYChRBUElfS0VZX1RZUEVfQ09OVFJPTBADEh4KGkFQSV9LRVlfVFlQRV9QVUJMSUNfVEVOQU5UEAQSHgoaQVBJX0tFWV9UWVBFX1NFQ1JFVF9URU5BTlQQBSq5AQoXQ2FwYWJpbGl0eVJlcXVlc3RTdGF0dXMSKQolQ0FQQUJJTElUWV9SRVFVRVNUX1NUQVRVU19VTlNQRUNJRklFRBAAEiUKIUNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfUEVORElORxABEiYKIkNBUEFCSUxJVFlfUkVRVUVTVF9TVEFUVVNfQVBQUk9WRUQQAhIkCiBDQVBBQklMSVRZX1JFUVVFU1RfU1RBVFVTX0RFTklFRBADKqoBCglBY3RvcktpbmQSGgoWQUNUT1JfS0lORF9VTlNQRUNJRklFRBAAEhUKEUFDVE9SX0tJTkRfTUVNQkVSEAESIAocQUNUT1JfS0lORF9QTEFURk9STV9PUEVSQVRPUhACEhYKEkFDVE9SX0tJTkRfTUFDSElORRADEhYKEkFDVE9SX0tJTkRfVU5LTk9XThAEEhgKFEFDVE9SX0tJTkRfQVNTSVNUQU5UEAUqqQEKG0ltcGVyc29uYXRpb25BcHByb3ZhbE1ldGhvZBItCilJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9VTlNQRUNJRklFRBAAEiwKKElNUEVSU09OQVRJT05fQVBQUk9WQUxfTUVUSE9EX1RFTkFOVF9PVFAQARItCilJTVBFUlNPTkFUSU9OX0FQUFJPVkFMX01FVEhPRF9CUkVBS19HTEFTUxACKowCChhJbXBlcnNvbmF0aW9uR3JhbnRTdGF0dXMSKgomSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19QRU5ESU5HEAESJQohSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfQUNUSVZFEAISJgoiSU1QRVJTT05BVElPTl9HUkFOVF9TVEFUVVNfRVhQSVJFRBADEiYKIklNUEVSU09OQVRJT05fR1JBTlRfU1RBVFVTX1JFVk9LRUQQBBIlCiFJTVBFUlNPTkFUSU9OX0dSQU5UX1NUQVRVU19ERU5JRUQQBSqJAQoWVGVuYW50RW50aXRsZW1lbnRTdGF0ZRIoCiRURU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfVU5TUEVDSUZJRUQQABIiCh5URU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfR1JBTlQQARIhCh1URU5BTlRfRU5USVRMRU1FTlRfU1RBVEVfREVOWRACKnkKEVJvbGVQcmluY2lwYWxLaW5kEiMKH1JPTEVfUFJJTkNJUEFMX0tJTkRfVU5TUEVDSUZJRUQQABIgChxST0xFX1BSSU5DSVBBTF9LSU5EX0NVU1RPTUVSEAESHQoZUk9MRV9QUklOQ0lQQUxfS0lORF9BRE1JThACMo2PAQoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USXAoPR2V0U2lnbnVwQ29uZmlnEiMuaWRlbnRpdHkudjEuR2V0U2lnbnVwQ29uZmlnUmVxdWVzdBokLmlkZW50aXR5LnYxLkdldFNpZ251cENvbmZpZ1Jlc3BvbnNlElAKC1ZlcmlmeUVtYWlsEh8uaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXF1ZXN0GiAuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxSZXNwb25zZRJ0ChdSZXNlbmRWZXJpZmljYXRpb25FbWFpbBIrLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdBosLmlkZW50aXR5LnYxLlJlc2VuZFZlcmlmaWNhdGlvbkVtYWlsUmVzcG9uc2USegoZU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZRItLmlkZW50aXR5LnYxLlNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlc3BvbnNlElwKD1ZlcmlmeUVtYWlsQ29kZRIjLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QaJC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbENvZGVSZXNwb25zZRJrChRSZXF1ZXN0UGFzc3dvcmRSZXNldBIoLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBopLmlkZW50aXR5LnYxLlJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USVgoNUmVzZXRQYXNzd29yZBIhLmlkZW50aXR5LnYxLlJlc2V0UGFzc3dvcmRSZXF1ZXN0GiIuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlc3BvbnNlElkKDlVwZGF0ZVBhc3N3b3JkEiIuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlUGFzc3dvcmRSZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJWCg1SZXNvbHZlQWN0b3JzEiEuaWRlbnRpdHkudjEuUmVzb2x2ZUFjdG9yc1JlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNvbHZlQWN0b3JzUmVzcG9uc2USYgoRTGlzdFRlbmFudE1lbWJlcnMSJS5pZGVudGl0eS52MS5MaXN0VGVuYW50TWVtYmVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0VGVuYW50TWVtYmVyc1Jlc3BvbnNlElAKC0dyYW50QWNjZXNzEh8uaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXF1ZXN0GiAuaWRlbnRpdHkudjEuR3JhbnRBY2Nlc3NSZXNwb25zZRJTCgxSZXZva2VBY2Nlc3MSIC5pZGVudGl0eS52MS5SZXZva2VBY2Nlc3NSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVzcG9uc2USaAoTUmV2b2tlSW1wZXJzb25hdGlvbhInLmlkZW50aXR5LnYxLlJldm9rZUltcGVyc29uYXRpb25SZXF1ZXN0GiguaWRlbnRpdHkudjEuUmV2b2tlSW1wZXJzb25hdGlvblJlc3BvbnNlEnQKF0xpc3RJbXBlcnNvbmF0aW9uR3JhbnRzEisuaWRlbnRpdHkudjEuTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEltcGVyc29uYXRpb25HcmFudHNSZXNwb25zZRJrChRSZXF1ZXN0SW1wZXJzb25hdGlvbhIoLmlkZW50aXR5LnYxLlJlcXVlc3RJbXBlcnNvbmF0aW9uUmVxdWVzdBopLmlkZW50aXR5LnYxLlJlcXVlc3RJbXBlcnNvbmF0aW9uUmVzcG9uc2USawoUQXBwcm92ZUltcGVyc29uYXRpb24SKC5pZGVudGl0eS52MS5BcHByb3ZlSW1wZXJzb25hdGlvblJlcXVlc3QaKS5pZGVudGl0eS52MS5BcHByb3ZlSW1wZXJzb25hdGlvblJlc3BvbnNlEmIKEURlbnlJbXBlcnNvbmF0aW9uEiUuaWRlbnRpdHkudjEuRGVueUltcGVyc29uYXRpb25SZXF1ZXN0GiYuaWRlbnRpdHkudjEuRGVueUltcGVyc29uYXRpb25SZXNwb25zZRJ0ChdCcmVha0dsYXNzSW1wZXJzb25hdGlvbhIrLmlkZW50aXR5LnYxLkJyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVxdWVzdBosLmlkZW50aXR5LnYxLkJyZWFrR2xhc3NJbXBlcnNvbmF0aW9uUmVzcG9uc2USUAoLRW50ZXJUZW5hbnQSHy5pZGVudGl0eS52MS5FbnRlclRlbmFudFJlcXVlc3QaIC5pZGVudGl0eS52MS5FbnRlclRlbmFudFJlc3BvbnNlEmgKE01pbnRNY3BXb3JraW5nVG9rZW4SJy5pZGVudGl0eS52MS5NaW50TWNwV29ya2luZ1Rva2VuUmVxdWVzdBooLmlkZW50aXR5LnYxLk1pbnRNY3BXb3JraW5nVG9rZW5SZXNwb25zZRJZCg5DcmVhdGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVyUmVzcG9uc2USUAoLR2V0Q3VzdG9tZXISHy5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlcXVlc3QaIC5pZGVudGl0eS52MS5HZXRDdXN0b21lclJlc3BvbnNlElkKDlVwZGF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSZXNwb25zZRJZCg5EZWxldGVDdXN0b21lchIiLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVxdWVzdBojLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbWVyUmVzcG9uc2USVgoNTGlzdEN1c3RvbWVycxIhLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lcnNSZXF1ZXN0GiIuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1Jlc3BvbnNlElwKD1N1c3BlbmRDdXN0b21lchIjLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlcXVlc3QaJC5pZGVudGl0eS52MS5TdXNwZW5kQ3VzdG9tZXJSZXNwb25zZRJZCg5NZXJnZUN1c3RvbWVycxIiLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzUmVxdWVzdBojLmlkZW50aXR5LnYxLk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USaAoTU2V0Q3VzdG9tZXJQYXNzd29yZBInLmlkZW50aXR5LnYxLlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0GiguaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlc3BvbnNlEncKGENyZWF0ZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ0ChdMaXN0Q3VzdG9tZXJJbnZpdGF0aW9ucxIrLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVxdWVzdBosLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lckludml0YXRpb25zUmVzcG9uc2USbgoVR2V0Q3VzdG9tZXJJbnZpdGF0aW9uEikuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJldm9rZUN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhSZXNlbmRDdXN0b21lckludml0YXRpb24SLC5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USfQoaVmFsaWRhdGVDdXN0b21lckludml0YXRpb24SLi5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLy5pZGVudGl0eS52MS5WYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGEFjY2VwdEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5BY2NlcHRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ3ChhHZXRDdXN0b21lclNpZ251cENvbnRleHQSLC5pZGVudGl0eS52MS5HZXRDdXN0b21lclNpZ251cENvbnRleHRSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJTaWdudXBDb250ZXh0UmVzcG9uc2USUwoMSm9pbldhaXRsaXN0EiAuaWRlbnRpdHkudjEuSm9pbldhaXRsaXN0UmVxdWVzdBohLmlkZW50aXR5LnYxLkpvaW5XYWl0bGlzdFJlc3BvbnNlEmIKEUpvaW5BZG1pbldhaXRsaXN0EiUuaWRlbnRpdHkudjEuSm9pbkFkbWluV2FpdGxpc3RSZXF1ZXN0GiYuaWRlbnRpdHkudjEuSm9pbkFkbWluV2FpdGxpc3RSZXNwb25zZRJoChNMaXN0V2FpdGxpc3RFbnRyaWVzEicuaWRlbnRpdHkudjEuTGlzdFdhaXRsaXN0RW50cmllc1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0V2FpdGxpc3RFbnRyaWVzUmVzcG9uc2USawoUQXBwcm92ZVdhaXRsaXN0RW50cnkSKC5pZGVudGl0eS52MS5BcHByb3ZlV2FpdGxpc3RFbnRyeVJlcXVlc3QaKS5pZGVudGl0eS52MS5BcHByb3ZlV2FpdGxpc3RFbnRyeVJlc3BvbnNlEmIKEURlbnlXYWl0bGlzdEVudHJ5EiUuaWRlbnRpdHkudjEuRGVueVdhaXRsaXN0RW50cnlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuRGVueVdhaXRsaXN0RW50cnlSZXNwb25zZRJTCgxDcmVhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuQ3JlYXRlVGVuYW50UmVzcG9uc2USXAoPQ3JlYXRlV29ya3NwYWNlEiMuaWRlbnRpdHkudjEuQ3JlYXRlV29ya3NwYWNlUmVxdWVzdBokLmlkZW50aXR5LnYxLkNyZWF0ZVdvcmtzcGFjZVJlc3BvbnNlEkoKCUdldFRlbmFudBIdLmlkZW50aXR5LnYxLkdldFRlbmFudFJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXNwb25zZRJTCgxVcGRhdGVUZW5hbnQSIC5pZGVudGl0eS52MS5VcGRhdGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVzcG9uc2UShgEKHVNldFRlbmFudFByb2plY3RMaW1pdE92ZXJyaWRlEjEuaWRlbnRpdHkudjEuU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXF1ZXN0GjIuaWRlbnRpdHkudjEuU2V0VGVuYW50UHJvamVjdExpbWl0T3ZlcnJpZGVSZXNwb25zZRKJAQoeU2V0VGVuYW50QW5vbnltb3VzTm90ZXNFbmFibGVkEjIuaWRlbnRpdHkudjEuU2V0VGVuYW50QW5vbnltb3VzTm90ZXNFbmFibGVkUmVxdWVzdBozLmlkZW50aXR5LnYxLlNldFRlbmFudEFub255bW91c05vdGVzRW5hYmxlZFJlc3BvbnNlEmsKFFNldFRlbmFudEVudGl0bGVtZW50EiguaWRlbnRpdHkudjEuU2V0VGVuYW50RW50aXRsZW1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuU2V0VGVuYW50RW50aXRsZW1lbnRSZXNwb25zZRJxChZMaXN0VGVuYW50RW50aXRsZW1lbnRzEiouaWRlbnRpdHkudjEuTGlzdFRlbmFudEVudGl0bGVtZW50c1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0VGVuYW50RW50aXRsZW1lbnRzUmVzcG9uc2USUAoLTGlzdFRlbmFudHMSHy5pZGVudGl0eS52MS5MaXN0VGVuYW50c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0VGVuYW50c1Jlc3BvbnNlElMKDERlbGV0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkRlbGV0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXNwb25zZRJWCg1DcmVhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0UmVzcG9uc2USTQoKR2V0UHJvamVjdBIeLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuR2V0UHJvamVjdFJlc3BvbnNlElYKDVVwZGF0ZVByb2plY3QSIS5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RSZXNwb25zZRJTCgxMaXN0UHJvamVjdHMSIC5pZGVudGl0eS52MS5MaXN0UHJvamVjdHNSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVzcG9uc2USVgoNRGVsZXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdFJlc3BvbnNlElMKDFB1cmdlUHJvamVjdBIgLmlkZW50aXR5LnYxLlB1cmdlUHJvamVjdFJlcXVlc3QaIS5pZGVudGl0eS52MS5QdXJnZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEmUKEkNyZWF0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRJcCg9HZXRQcm9qZWN0R3JvdXASIy5pZGVudGl0eS52MS5HZXRQcm9qZWN0R3JvdXBSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UHJvamVjdEdyb3VwUmVzcG9uc2USYgoRTGlzdFByb2plY3RHcm91cHMSJS5pZGVudGl0eS52MS5MaXN0UHJvamVjdEdyb3Vwc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0UHJvamVjdEdyb3Vwc1Jlc3BvbnNlEmUKElVwZGF0ZVByb2plY3RHcm91cBImLmlkZW50aXR5LnYxLlVwZGF0ZVByb2plY3RHcm91cFJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0R3JvdXBSZXNwb25zZRJlChJEZWxldGVQcm9qZWN0R3JvdXASJi5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0R3JvdXBSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlUHJvamVjdEdyb3VwUmVzcG9uc2USYgoRQWRkUHJvamVjdFRvR3JvdXASJS5pZGVudGl0eS52MS5BZGRQcm9qZWN0VG9Hcm91cFJlcXVlc3QaJi5pZGVudGl0eS52MS5BZGRQcm9qZWN0VG9Hcm91cFJlc3BvbnNlEnEKFlJlbW92ZVByb2plY3RGcm9tR3JvdXASKi5pZGVudGl0eS52MS5SZW1vdmVQcm9qZWN0RnJvbUdyb3VwUmVxdWVzdBorLmlkZW50aXR5LnYxLlJlbW92ZVByb2plY3RGcm9tR3JvdXBSZXNwb25zZRJfChBQcm92aXNpb25Qcm9qZWN0EiQuaWRlbnRpdHkudjEuUHJvdmlzaW9uUHJvamVjdFJlcXVlc3QaJS5pZGVudGl0eS52MS5Qcm92aXNpb25Qcm9qZWN0UmVzcG9uc2USZQoSR2V0UHJvdmlzaW9uU3RhdHVzEiYuaWRlbnRpdHkudjEuR2V0UHJvdmlzaW9uU3RhdHVzUmVxdWVzdBonLmlkZW50aXR5LnYxLkdldFByb3Zpc2lvblN0YXR1c1Jlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USYgoRTGlzdE15SW52aXRhdGlvbnMSJS5pZGVudGl0eS52MS5MaXN0TXlJbnZpdGF0aW9uc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0TXlJbnZpdGF0aW9uc1Jlc3BvbnNlEl8KEFJldm9rZUludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXZva2VJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXNwb25zZRJfChBBY2NlcHRJbnZpdGF0aW9uEiQuaWRlbnRpdHkudjEuQWNjZXB0SW52aXRhdGlvblJlcXVlc3QaJS5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVzcG9uc2USZQoSVmFsaWRhdGVJbnZpdGF0aW9uEiYuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVxdWVzdBonLmlkZW50aXR5LnYxLlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVBcGlLZXlSZXNwb25zZRJKCglHZXRBcGlLZXkSHS5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0QXBpS2V5UmVzcG9uc2USUAoLTGlzdEFwaUtleXMSHy5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1JlcXVlc3QaIC5pZGVudGl0eS52MS5MaXN0QXBpS2V5c1Jlc3BvbnNlElMKDFVwZGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5VcGRhdGVBcGlLZXlSZXNwb25zZRJTCgxSb3RhdGVBcGlLZXkSIC5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUm90YXRlQXBpS2V5UmVzcG9uc2USUwoMUmV2b2tlQXBpS2V5EiAuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFwaUtleVJlc3BvbnNlEmIKEUxpc3RBdXRoUHJvdmlkZXJzEiUuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlcnNSZXNwb25zZRJcCg9HZXRBdXRoUHJvdmlkZXISIy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSQ3JlYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKElVwZGF0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJEZWxldGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USaAoTUHVibGlzaEF1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlB1Ymxpc2hBdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEm4KFVVucHVibGlzaEF1dGhQcm92aWRlchIpLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKi5pZGVudGl0eS52MS5VbnB1Ymxpc2hBdXRoUHJvdmlkZXJSZXNwb25zZRKDAQocR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1cxIwLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2gSLy5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjAuaWRlbnRpdHkudjEuU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2gSNi5pZGVudGl0eS52MS5DYW5jZWxTY2hlZHVsZWRBdXRoUHJvdmlkZXJQdWJsaXNoUmVxdWVzdBo3LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRJxChZHZXRBdXRoUHJvdmlkZXJWZXJzaW9uEiouaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaKy5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVzcG9uc2USdwoYTGlzdEF1dGhQcm92aWRlclZlcnNpb25zEiwuaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVxdWVzdBotLmlkZW50aXR5LnYxLkxpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEn0KGlJlc3RvcmVBdXRoUHJvdmlkZXJWZXJzaW9uEi4uaWRlbnRpdHkudjEuUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0Gi8uaWRlbnRpdHkudjEuUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJuChVFbmFibGVkT0F1dGhQcm92aWRlcnMSKS5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXF1ZXN0GiouaWRlbnRpdHkudjEuRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USXwoQTWludFNlcnZpY2VUb2tlbhIkLmlkZW50aXR5LnYxLk1pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0GiUuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlc3BvbnNlElwKD1VwZGF0ZU15UHJvZmlsZRIjLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlcXVlc3QaJC5pZGVudGl0eS52MS5VcGRhdGVNeVByb2ZpbGVSZXNwb25zZRJxChZMaXN0TXlPQXV0aENvbm5lY3Rpb25zEiouaWRlbnRpdHkudjEuTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QaKy5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USaAoTVW5saW5rT0F1dGhQcm92aWRlchInLmlkZW50aXR5LnYxLlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0GiguaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlc3BvbnNlEnEKFkNoZWNrRW1haWxBdmFpbGFiaWxpdHkSKi5pZGVudGl0eS52MS5DaGVja0VtYWlsQXZhaWxhYmlsaXR5UmVxdWVzdBorLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRJrChRDb21wbGV0ZUFjY291bnRTZXR1cBIoLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBopLmlkZW50aXR5LnYxLkNvbXBsZXRlQWNjb3VudFNldHVwUmVzcG9uc2USaAoTQ3JlYXRlU2lnbnVwU2Vzc2lvbhInLmlkZW50aXR5LnYxLkNyZWF0ZVNpZ251cFNlc3Npb25SZXF1ZXN0GiguaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlc3BvbnNlEl8KEFJlc2VuZEludml0YXRpb24SJC5pZGVudGl0eS52MS5SZXNlbmRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXNwb25zZRJoChNSZXNlbmRBY2NvdW50QWNjZXNzEicuaWRlbnRpdHkudjEuUmVzZW5kQWNjb3VudEFjY2Vzc1JlcXVlc3QaKC5pZGVudGl0eS52MS5SZXNlbmRBY2NvdW50QWNjZXNzUmVzcG9uc2USVgoNR2V0SW52aXRhdGlvbhIhLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXF1ZXN0GiIuaWRlbnRpdHkudjEuR2V0SW52aXRhdGlvblJlc3BvbnNlElkKDkFjdGl2YXRlVGVuYW50EiIuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQWN0aXZhdGVUZW5hbnRSZXNwb25zZRJuChVSZXF1ZXN0VGVuYW50RGVsZXRpb24SKS5pZGVudGl0eS52MS5SZXF1ZXN0VGVuYW50RGVsZXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmVxdWVzdFRlbmFudERlbGV0aW9uUmVzcG9uc2USgAEKG0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIvLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3QaMC5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXNwb25zZRJZCg5WYWxpZGF0ZUFwaUtleRIiLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVxdWVzdBojLmlkZW50aXR5LnYxLlZhbGlkYXRlQXBpS2V5UmVzcG9uc2USVgoNQ3VzdG9tZXJMb2dpbhIhLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlc3BvbnNlEl8KEEN1c3RvbWVyUmVnaXN0ZXISJC5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVxdWVzdBolLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRJrChRDdXN0b21lclJlZnJlc2hUb2tlbhIoLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBopLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USZQoSQ3VzdG9tZXJSZXF1ZXN0T1RQEiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBonLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlc3BvbnNlEmIKEUN1c3RvbWVyVmVyaWZ5T1RQEiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXF1ZXN0GiYuaWRlbnRpdHkudjEuQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRKDAQocQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldBIwLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GjEuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEm4KFUN1c3RvbWVyUmVzZXRQYXNzd29yZBIpLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QaKi5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXNwb25zZRJ0ChdVcGRhdGVNeUN1c3RvbWVyUHJvZmlsZRIrLmlkZW50aXR5LnYxLlVwZGF0ZU15Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBosLmlkZW50aXR5LnYxLlVwZGF0ZU15Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USXAoPRGVsZXRlTXlBY2NvdW50EiMuaWRlbnRpdHkudjEuRGVsZXRlTXlBY2NvdW50UmVxdWVzdBokLmlkZW50aXR5LnYxLkRlbGV0ZU15QWNjb3VudFJlc3BvbnNlEmUKElN0b3JlUHJvdmlkZXJUb2tlbhImLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZRJfChBHZXRQcm92aWRlclRva2VuEiQuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVzcG9uc2USawoURGVsZXRlUHJvdmlkZXJUb2tlbnMSKC5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QaKS5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlEmUKElN0YXJ0UHJvdmlkZXJMb2dpbhImLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRJoChNGaW5pc2hQcm92aWRlckxvZ2luEicuaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QaKC5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVzcG9uc2USfQoaU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEoYBCh1Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pchIxLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBoyLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USdAoXU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXISKy5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLC5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEn0KGkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJQCgtCZWdpblN0ZXBVcBIfLmlkZW50aXR5LnYxLkJlZ2luU3RlcFVwUmVxdWVzdBogLmlkZW50aXR5LnYxLkJlZ2luU3RlcFVwUmVzcG9uc2USWQoOQ29tcGxldGVTdGVwVXASIi5pZGVudGl0eS52MS5Db21wbGV0ZVN0ZXBVcFJlcXVlc3QaIy5pZGVudGl0eS52MS5Db21wbGV0ZVN0ZXBVcFJlc3BvbnNlEmUKEkJlZ2luTWZhRW5yb2xsbWVudBImLmlkZW50aXR5LnYxLkJlZ2luTWZhRW5yb2xsbWVudFJlcXVlc3QaJy5pZGVudGl0eS52MS5CZWdpbk1mYUVucm9sbG1lbnRSZXNwb25zZRJuChVDb21wbGV0ZU1mYUVucm9sbG1lbnQSKS5pZGVudGl0eS52MS5Db21wbGV0ZU1mYUVucm9sbG1lbnRSZXF1ZXN0GiouaWRlbnRpdHkudjEuQ29tcGxldGVNZmFFbnJvbGxtZW50UmVzcG9uc2USZQoSTGlzdFJlbHlpbmdQYXJ0aWVzEiYuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBonLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1Jlc3BvbnNlElwKD0dldFJlbHlpbmdQYXJ0eRIjLmlkZW50aXR5LnYxLkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXNwb25zZRJlChJDcmVhdGVSZWx5aW5nUGFydHkSJi5pZGVudGl0eS52MS5DcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USZQoSVXBkYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuVXBkYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmgKE0Rpc2FibGVSZWx5aW5nUGFydHkSJy5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVxdWVzdBooLmlkZW50aXR5LnYxLkRpc2FibGVSZWx5aW5nUGFydHlSZXNwb25zZRJrChRSZWdpc3RlckN1c3RvbURvbWFpbhIoLmlkZW50aXR5LnYxLlJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBopLmlkZW50aXR5LnYxLlJlZ2lzdGVyQ3VzdG9tRG9tYWluUmVzcG9uc2USegoZR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZRItLmlkZW50aXR5LnYxLkdldEN1c3RvbURvbWFpbkJ5SG9zdG5hbWVSZXF1ZXN0Gi4uaWRlbnRpdHkudjEuR2V0Q3VzdG9tRG9tYWluQnlIb3N0bmFtZVJlc3BvbnNlEmUKElZlcmlmeUN1c3RvbURvbWFpbhImLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QaJy5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRJlChJEZWxldGVDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2USYgoRTGlzdEN1c3RvbURvbWFpbnMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1Jlc3BvbnNlEmsKFExpc3RDdXN0b21lclNlc3Npb25zEiguaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRJuChVSZXZva2VDdXN0b21lclNlc3Npb24SKS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UScQoWTGlzdFJlbHlpbmdQYXJ0eUdyYW50cxIqLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1Jlc3BvbnNlEmIKEUdyYW50UmVseWluZ1BhcnR5EiUuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRJ0ChdSZXZva2VSZWx5aW5nUGFydHlHcmFudBIrLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBosLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVzcG9uc2USSgoJTGlzdFJvbGVzEh0uaWRlbnRpdHkudjEuTGlzdFJvbGVzUmVxdWVzdBoeLmlkZW50aXR5LnYxLkxpc3RSb2xlc1Jlc3BvbnNlEkQKB0dldFJvbGUSGy5pZGVudGl0eS52MS5HZXRSb2xlUmVxdWVzdBocLmlkZW50aXR5LnYxLkdldFJvbGVSZXNwb25zZRJNCgpDcmVhdGVSb2xlEh4uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlcXVlc3QaHy5pZGVudGl0eS52MS5DcmVhdGVSb2xlUmVzcG9uc2USTQoKVXBkYXRlUm9sZRIeLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuVXBkYXRlUm9sZVJlc3BvbnNlElAKC0Rpc2FibGVSb2xlEh8uaWRlbnRpdHkudjEuRGlzYWJsZVJvbGVSZXF1ZXN0GiAuaWRlbnRpdHkudjEuRGlzYWJsZVJvbGVSZXNwb25zZRJNCgpBc3NpZ25Sb2xlEh4uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlcXVlc3QaHy5pZGVudGl0eS52MS5Bc3NpZ25Sb2xlUmVzcG9uc2USawoUUmV2b2tlUm9sZUFzc2lnbm1lbnQSKC5pZGVudGl0eS52MS5SZXZva2VSb2xlQXNzaWdubWVudFJlcXVlc3QaKS5pZGVudGl0eS52MS5SZXZva2VSb2xlQXNzaWdubWVudFJlc3BvbnNlEmgKE0xpc3RSb2xlQXNzaWdubWVudHMSJy5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVxdWVzdBooLmlkZW50aXR5LnYxLkxpc3RSb2xlQXNzaWdubWVudHNSZXNwb25zZRJiChFSZXF1ZXN0Q2FwYWJpbGl0eRIlLmlkZW50aXR5LnYxLlJlcXVlc3RDYXBhYmlsaXR5UmVxdWVzdBomLmlkZW50aXR5LnYxLlJlcXVlc3RDYXBhYmlsaXR5UmVzcG9uc2USdwoYTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzEiwuaWRlbnRpdHkudjEuTGlzdE15Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBotLmlkZW50aXR5LnYxLkxpc3RNeUNhcGFiaWxpdHlSZXF1ZXN0c1Jlc3BvbnNlEnEKFkxpc3RDYXBhYmlsaXR5UmVxdWVzdHMSKi5pZGVudGl0eS52MS5MaXN0Q2FwYWJpbGl0eVJlcXVlc3RzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RDYXBhYmlsaXR5UmVxdWVzdHNSZXNwb25zZRJ3ChhSZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3QSLC5pZGVudGl0eS52MS5SZXNvbHZlQ2FwYWJpbGl0eVJlcXVlc3RSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuUmVzb2x2ZUNhcGFiaWxpdHlSZXF1ZXN0UmVzcG9uc2USfQoaQnVsa0FwcGx5V29ya3NwYWNlQ3JlYXRpb24SLi5pZGVudGl0eS52MS5CdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlcXVlc3QaLy5pZGVudGl0eS52MS5CdWxrQXBwbHlXb3Jrc3BhY2VDcmVhdGlvblJlc3BvbnNlEoABChtCdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb24SLy5pZGVudGl0eS52MS5CdWxrUmV2b2tlV29ya3NwYWNlQ3JlYXRpb25SZXF1ZXN0GjAuaWRlbnRpdHkudjEuQnVsa1Jldm9rZVdvcmtzcGFjZUNyZWF0aW9uUmVzcG9uc2USZQoSR2V0U2VjdXJpdHlTdW1tYXJ5EiYuaWRlbnRpdHkudjEuR2V0U2VjdXJpdHlTdW1tYXJ5UmVxdWVzdBonLmlkZW50aXR5LnYxLkdldFNlY3VyaXR5U3VtbWFyeVJlc3BvbnNlEmgKE0dldFN1c3BpY2lvdXNMb2dpbnMSJy5pZGVudGl0eS52MS5HZXRTdXNwaWNpb3VzTG9naW5zUmVxdWVzdBooLmlkZW50aXR5LnYxLkdldFN1c3BpY2lvdXNMb2dpbnNSZXNwb25zZRJcCg9HZXRGYWlsZWRMb2dpbnMSIy5pZGVudGl0eS52MS5HZXRGYWlsZWRMb2dpbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0RmFpbGVkTG9naW5zUmVzcG9uc2USZQoSR2V0QWNjb3VudExvY2tvdXRzEiYuaWRlbnRpdHkudjEuR2V0QWNjb3VudExvY2tvdXRzUmVxdWVzdBonLmlkZW50aXR5LnYxLkdldEFjY291bnRMb2Nrb3V0c1Jlc3BvbnNlEncKGEdldFRlbmFudFNlY3VyaXR5U3VtbWFyeRIsLmlkZW50aXR5LnYxLkdldFRlbmFudFNlY3VyaXR5U3VtbWFyeVJlcXVlc3QaLS5pZGVudGl0eS52MS5HZXRUZW5hbnRTZWN1cml0eVN1bW1hcnlSZXNwb25zZRJ6ChlHZXRUZW5hbnRTdXNwaWNpb3VzTG9naW5zEi0uaWRlbnRpdHkudjEuR2V0VGVuYW50U3VzcGljaW91c0xvZ2luc1JlcXVlc3QaLi5pZGVudGl0eS52MS5HZXRUZW5hbnRTdXNwaWNpb3VzTG9naW5zUmVzcG9uc2USbgoVR2V0VGVuYW50RmFpbGVkTG9naW5zEikuaWRlbnRpdHkudjEuR2V0VGVuYW50RmFpbGVkTG9naW5zUmVxdWVzdBoqLmlkZW50aXR5LnYxLkdldFRlbmFudEZhaWxlZExvZ2luc1Jlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
680
698
  var CustomerSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 2);
681
699
  var TenantSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 3);
682
700
  var ApiKeySchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 10);
@@ -739,99 +757,100 @@ var CreateWorkspaceRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1
739
757
  var GetTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 131);
740
758
  var UpdateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 133);
741
759
  var SetTenantProjectLimitOverrideRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 135);
742
- var SetTenantEntitlementRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 138);
743
- var ListTenantEntitlementsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 140);
744
- var ListTenantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 142);
745
- var DeleteTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 144);
746
- var CreateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 146);
747
- var GetProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 148);
748
- var UpdateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 150);
749
- var ListProjectsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
750
- var DeleteProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
751
- var PurgeProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
752
- var GetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
753
- var SetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
754
- var CreateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
755
- var GetProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
756
- var ListProjectGroupsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
757
- var UpdateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 168);
758
- var DeleteProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 170);
759
- var AddProjectToGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 172);
760
- var RemoveProjectFromGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 174);
761
- var ProvisionProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 178);
762
- var GetProvisionStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 180);
763
- var CreateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 182);
764
- var ListInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 184);
765
- var ListMyInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 187);
766
- var RevokeInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 189);
767
- var AcceptInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 191);
768
- var ValidateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 193);
769
- var CreateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
770
- var GetApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 197);
771
- var ListApiKeysRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 199);
772
- var UpdateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 201);
773
- var RotateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 203);
774
- var RevokeApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 205);
775
- var AuthProviderSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 207);
776
- var ListAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 208);
777
- var GetAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 210);
778
- var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 212);
779
- var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 214);
780
- var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 216);
781
- var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 218);
782
- var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 220);
783
- var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 222);
784
- var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 225);
785
- var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 227);
786
- var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 229);
787
- var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 231);
788
- var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 233);
789
- var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 235);
790
- var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 238);
791
- var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
792
- var ListMyOAuthConnectionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
793
- var UnlinkOAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 245);
794
- var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
795
- var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
796
- var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
797
- var ResendAccountAccessRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 253);
798
- var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 255);
799
- var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 259);
800
- var RequestTenantDeletionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
801
- var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
802
- var BeginStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 298);
803
- var CompleteStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 300);
804
- var BeginMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 302);
805
- var CompleteMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 304);
806
- var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 312);
807
- var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 314);
808
- var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 317);
809
- var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 319);
810
- var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 321);
811
- var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 324);
812
- var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 326);
813
- var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 328);
814
- var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 332);
815
- var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 335);
816
- var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 337);
817
- var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 340);
818
- var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 342);
819
- var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 344);
820
- var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 346);
821
- var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 347);
822
- var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 349);
823
- var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 351);
824
- var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 353);
825
- var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 355);
826
- var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 357);
827
- var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 358);
828
- var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 360);
829
- var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 362);
830
- var JoinWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 365);
831
- var JoinAdminWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 369);
832
- var ListWaitlistEntriesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 371);
833
- var ApproveWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 373);
834
- var DenyWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 375);
760
+ var SetTenantAnonymousNotesEnabledRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 137);
761
+ var SetTenantEntitlementRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 140);
762
+ var ListTenantEntitlementsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 142);
763
+ var ListTenantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 144);
764
+ var DeleteTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 146);
765
+ var CreateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 148);
766
+ var GetProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 150);
767
+ var UpdateProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
768
+ var ListProjectsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
769
+ var DeleteProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
770
+ var PurgeProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
771
+ var GetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
772
+ var SetDefaultProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
773
+ var CreateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
774
+ var GetProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
775
+ var ListProjectGroupsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 168);
776
+ var UpdateProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 170);
777
+ var DeleteProjectGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 172);
778
+ var AddProjectToGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 174);
779
+ var RemoveProjectFromGroupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 176);
780
+ var ProvisionProjectRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 180);
781
+ var GetProvisionStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 182);
782
+ var CreateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 184);
783
+ var ListInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 186);
784
+ var ListMyInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 189);
785
+ var RevokeInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 191);
786
+ var AcceptInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 193);
787
+ var ValidateInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
788
+ var CreateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 197);
789
+ var GetApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 199);
790
+ var ListApiKeysRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 201);
791
+ var UpdateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 203);
792
+ var RotateApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 205);
793
+ var RevokeApiKeyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 207);
794
+ var AuthProviderSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 209);
795
+ var ListAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 210);
796
+ var GetAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 212);
797
+ var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 214);
798
+ var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 216);
799
+ var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 218);
800
+ var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 220);
801
+ var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 222);
802
+ var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 224);
803
+ var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 227);
804
+ var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 229);
805
+ var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 231);
806
+ var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 233);
807
+ var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 235);
808
+ var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 237);
809
+ var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
810
+ var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
811
+ var ListMyOAuthConnectionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 244);
812
+ var UnlinkOAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
813
+ var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
814
+ var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
815
+ var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 253);
816
+ var ResendAccountAccessRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 255);
817
+ var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 257);
818
+ var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
819
+ var RequestTenantDeletionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
820
+ var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 265);
821
+ var BeginStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 302);
822
+ var CompleteStepUpRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 304);
823
+ var BeginMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 306);
824
+ var CompleteMfaEnrollmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 308);
825
+ var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 316);
826
+ var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 318);
827
+ var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 321);
828
+ var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 323);
829
+ var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 325);
830
+ var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 328);
831
+ var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 330);
832
+ var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 332);
833
+ var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 336);
834
+ var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 339);
835
+ var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 341);
836
+ var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 344);
837
+ var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 346);
838
+ var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 348);
839
+ var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 350);
840
+ var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 351);
841
+ var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 353);
842
+ var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 355);
843
+ var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 357);
844
+ var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 359);
845
+ var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 361);
846
+ var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 362);
847
+ var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 364);
848
+ var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 366);
849
+ var JoinWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 369);
850
+ var JoinAdminWaitlistRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 373);
851
+ var ListWaitlistEntriesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 375);
852
+ var ApproveWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 377);
853
+ var DenyWaitlistEntryRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 379);
835
854
  var SignupModeSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 4);
836
855
  var SignupMode = /* @__PURE__ */ tsEnum2(SignupModeSchema);
837
856
  var CapabilityRequestStatusSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 11);
@@ -849,7 +868,7 @@ import { fileDesc as fileDesc4, messageDesc as messageDesc4 } from "@bufbuild/pr
849
868
  var file_common_v1_access = /* @__PURE__ */ fileDesc4("ChZjb21tb24vdjEvYWNjZXNzLnByb3RvEgljb21tb24udjEiKgoLRmllbGRBY2Nlc3MSDAoEcmVhZBgBIAMoCRINCgV3cml0ZRgCIAMoCUI5WjdnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vY29tbW9uL3YxO2NvbW1vbnYxYgZwcm90bzM");
850
869
 
851
870
  // ../../packages/proto-ts/src/models/v1/models_pb.js
852
- var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui0gUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBAUIMCgpfaGVscF90ZXh0Qg4KDF9wbGFjZWhvbGRlckIQCg5fZGVmYXVsdF92YWx1ZUIMCgpfaXRlbV90eXBlQgoKCF9zdG9yYWdlQhAKDl90ZW1wbGF0ZV96b25lQg0KC196b25lX29yZGVyQhMKEV9yZWZlcmVuY2VfZmlsdGVyQg0KC192YWxpZGF0aW9uQgwKCl9xdWVyeWFibGVCDwoNX3JlbGF0aW9uc2hpcCJyCgxBY2Nlc3NDb25maWcSKgoLb3duZXJfcGxhbmUYASABKA4yFS5tb2RlbHMudjEuT3duZXJQbGFuZRIfChJkZWZhdWx0X3Zpc2liaWxpdHkYAiABKAlIAIgBAUIVChNfZGVmYXVsdF92aXNpYmlsaXR5IsIGCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhgKC3BsdXJhbF9uYW1lGAcgASgJSACIAQESGAoLZGVzY3JpcHRpb24YCCABKAlIAYgBARIVCghjYXRlZ29yeRgJIAEoCUgCiAEBEhEKBGljb24YCiABKAlIA4gBARIaCg1kaXNwbGF5X2ZpZWxkGAsgASgJSASIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIBYgBARIVCghlZGl0YWJsZRgPIAEoCEgGiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIXCgpwbHVyYWxfa2V5GBIgASgJSAmIAQESLAoHbG9va3VwcxgTIAMoCzIbLm1vZGVscy52MS5Mb29rdXBEZWZpbml0aW9uEjkKDWNhY2hlX2NvbnRyb2wYFCABKAsyHS5tb2RlbHMudjEuQ2FjaGVDb250cm9sQ29uZmlnSAqIAQESLAoGYWNjZXNzGBUgASgLMhcubW9kZWxzLnYxLkFjY2Vzc0NvbmZpZ0gLiAEBEhEKCXNpbmdsZXRvbhgWIAEoCEIOCgxfcGx1cmFsX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jYXRlZ29yeUIHCgVfaWNvbkIQCg5fZGlzcGxheV9maWVsZEIMCgpfZGVsZXRhYmxlQgsKCV9lZGl0YWJsZUISChBfbWV0YWRhdGFfc2NoZW1hQggKBl9ob29rc0INCgtfcGx1cmFsX2tleUIQCg5fY2FjaGVfY29udHJvbEIJCgdfYWNjZXNzSgQIBRAGSgQIBhAHSgQIDBANSgQIFxAYUhBjdXN0b21lcl9jb250ZXh0Ug9jdXN0b21lcl9zY29wZWRSEW5hdHVyYWxfa2V5X2ZpZWxkUgdzaGFyaW5nIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKxAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIqCgtvd25lcl9wbGFuZRgGIAEoDjIVLm1vZGVscy52MS5Pd25lclBsYW5lSgQIBBAFSgQIBRAGUg9jdXN0b21lcl9zY29wZWRSD3NoYXJpbmdfZW5hYmxlZCKFCAoFTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSIAoGZmllbGRzGAQgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgFIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIWCgljb25maWdfaWQYBiABKAlIAIgBARIyCgxjYXBhYmlsaXRpZXMYByABKAsyHC5tb2RlbHMudjEuTW9kZWxDYXBhYmlsaXRpZXMSHwoSY3VycmVudF92ZXJzaW9uX2lkGAggASgJSAGIAQESJQoYcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyGAkgASgFSAKIAQESEQoJdGVuYW50X2lkGAogASgJEhIKCnByb2plY3RfaWQYCyABKAkSFwoKY3JlYXRlZF9ieRgUIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYFSABKAlIBIgBARIuCgpjcmVhdGVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsChJsYXN0X3B1c2hlZF9maWVsZHMYKCADKAsyEC5tb2RlbHMudjEuRmllbGQSNwoObGFzdF9wdXNoZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYKiABKAlIBogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgrIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhcKCm93bmVyX2tpbmQYLiABKAlICYgBARIVCghvd25lcl9pZBgvIAEoCUgKiAEBEhIKCm92ZXJyaWRkZW4YMCABKAhCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDQoLX293bmVyX2tpbmRCCwoJX293bmVyX2lkSgQILRAuUg5zY2hlbWFfZHJpZnRlZCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnki8QEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAgSFQoIZ3JvdXBfaWQYByABKAlIAogBAUIJCgdfY29uZmlnQgwKCl9jb25maWdfaWRCCwoJX2dyb3VwX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKMAgoRTGlzdE1vZGVsc1JlcXVlc3QSEgoFYWZ0ZXIYBiABKAlIAIgBARITCgZiZWZvcmUYByABKAlIAYgBARISCgVmaXJzdBgIIAEoBUgCiAEBEhEKBGxhc3QYCSABKAVIA4gBARIrCgV3aGVyZRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCCAoGX3doZXJlSgQIARACSgQIAhADSgQIAxAESgQIBBAFSgQIBRAGUghjYXRlZ29yeVIJY29uZmlnX2lkUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gikQEKEkxpc3RNb2RlbHNSZXNwb25zZRIgCgZtb2RlbHMYASADKAsyEC5tb2RlbHMudjEuTW9kZWwSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqECCg9Nb2RlbERlZmluaXRpb24SCgoCaWQYASABKAkSEgoKb3duZXJfa2luZBgCIAEoCRIWCg5sYXllcl9vd25lcl9pZBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSIAoGZmllbGRzGAcgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgIIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIuCgpjcmVhdGVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLMAQobTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKqAQocTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXNwb25zZRIvCgtkZWZpbml0aW9ucxgBIAMoCzIaLm1vZGVscy52MS5Nb2RlbERlZmluaXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIvICChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAgSIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgKIAEoCUgDiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCI2ChNVcGRhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIigKGlJlbW92ZU1vZGVsT3ZlcnJpZGVSZXF1ZXN0EgoKAmlkGAEgASgJIj4KG1JlbW92ZU1vZGVsT3ZlcnJpZGVSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxEZWxldGVNb2RlbERlZmluaXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjAKHURlbGV0ZU1vZGVsRGVmaW5pdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7wEKHFVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIVCg11cGRhdGVfZmllbGRzGAUgASgIEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgCiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiJACh1VcGRhdGVNb2RlbERlZmluaXRpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKZAQoZTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIQCghtb2RlbF9pZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRISCgpvd25lcl9raW5kGAQgASgJEhAKCG93bmVyX2lkGAUgASgJEhIKCm92ZXJyaWRkZW4YBiABKAgSFQoNZGVmaW5pdGlvbl9pZBgHIAEoCSJKCiBHZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiwAEKIUdldFByb2plY3RFZmZlY3RpdmVDb25maWdSZXNwb25zZRI0CgZtb2RlbHMYASADKAsyJC5tb2RlbHMudjEuTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIVCghncm91cF9pZBgCIAEoCUgAiAEBEhcKCmdyb3VwX25hbWUYAyABKAlIAYgBARIZChFvdmVycmlkZXNfYWxsb3dlZBgEIAEoCEILCglfZ3JvdXBfaWRCDQoLX2dyb3VwX25hbWUiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIqQBChhMaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QioQEKGUxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USKQoIdmVyc2lvbnMYASADKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyI+ChZHZXRNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiQwoXR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USKAoHdmVyc2lvbhgBIAEoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24iQgoaUmVzdG9yZU1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSI+ChtSZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiYwoURGVwcmVjYXRlZEZpZWxkVG91Y2gSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCWZpZWxkX2tleRgEIAEoCSJWCiJNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXF1ZXN0EjAKB3RvdWNoZXMYASADKAsyHy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkVG91Y2giNgojTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USDwoHdXBkYXRlZBgBIAEoBSIhChNQdWJsaXNoTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIm0KFFB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFFB1Ymxpc2hNb2RlbHNSZXF1ZXN0EgsKA2lkcxgBIAMoCSJvChVQdWJsaXNoTW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFVVucHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSI5ChZVbnB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIioKHEdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiSgodR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIiEKE0Rpc2NhcmREcmFmdFJlcXVlc3QSCgoCaWQYASABKAkiNwoURGlzY2FyZERyYWZ0UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwioQEKG1NjaGVkdWxlTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCI/ChxTY2hlZHVsZU1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIjAKIkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiRgojQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwqkgMKCUZpZWxkVHlwZRIaChZGSUVMRF9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPRklFTERfVFlQRV9URVhUEAESFQoRRklFTERfVFlQRV9OVU1CRVIQAhIWChJGSUVMRF9UWVBFX0JPT0xFQU4QAxITCg9GSUVMRF9UWVBFX0RBVEUQBBIVChFGSUVMRF9UWVBFX1NFTEVDVBAFEhMKD0ZJRUxEX1RZUEVfSlNPThAGEhMKD0ZJRUxEX1RZUEVfTElTVBAHEhQKEEZJRUxEX1RZUEVfTU9ERUwQCBIYChRGSUVMRF9UWVBFX1JFRkVSRU5DRRAJEhMKD0ZJRUxEX1RZUEVfRklMRRAKEhQKEEZJRUxEX1RZUEVfSU1BR0UQCxIUChBGSUVMRF9UWVBFX1ZJREVPEAwSFwoTRklFTERfVFlQRV9GTEVYSUJMRRANEhMKD0ZJRUxEX1RZUEVfRU5VTRAOEhcKE0ZJRUxEX1RZUEVfUklDSFRFWFQQDxIXChNGSUVMRF9UWVBFX0dFT1BPSU5UEBAqowEKEFJlbGF0aW9uc2hpcEtpbmQSIQodUkVMQVRJT05TSElQX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1SRUxBVElPTlNISVBfS0lORF9BU1NPQ0lBVElPThABEiEKHVJFTEFUSU9OU0hJUF9LSU5EX0NPTVBPU0lUSU9OEAISJgoiUkVMQVRJT05TSElQX0tJTkRfQVNTT0NJQVRJT05fUkVBRBADKnMKCk93bmVyUGxhbmUSGwoXT1dORVJfUExBTkVfVU5TUEVDSUZJRUQQABIYChRPV05FUl9QTEFORV9DVVNUT01FUhABEhUKEU9XTkVSX1BMQU5FX0FETUlOEAISFwoTT1dORVJfUExBTkVfUFJPSkVDVBADKpsBChFDYWNoZUNvbnRyb2xTY29wZRIjCh9DQUNIRV9DT05UUk9MX1NDT1BFX1VOU1BFQ0lGSUVEEAASHgoaQ0FDSEVfQ09OVFJPTF9TQ09QRV9QVUJMSUMQARIfChtDQUNIRV9DT05UUk9MX1NDT1BFX1BSSVZBVEUQAhIgChxDQUNIRV9DT05UUk9MX1NDT1BFX05PX0NBQ0hFEAMykREKDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USZwoUTGlzdE1vZGVsRGVmaW5pdGlvbnMSJi5tb2RlbHMudjEuTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0GicubW9kZWxzLnYxLkxpc3RNb2RlbERlZmluaXRpb25zUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USZAoTUmVtb3ZlTW9kZWxPdmVycmlkZRIlLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVxdWVzdBomLm1vZGVscy52MS5SZW1vdmVNb2RlbE92ZXJyaWRlUmVzcG9uc2USagoVRGVsZXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLkRlbGV0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuRGVsZXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USagoVVXBkYXRlTW9kZWxEZWZpbml0aW9uEicubW9kZWxzLnYxLlVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QaKC5tb2RlbHMudjEuVXBkYXRlTW9kZWxEZWZpbml0aW9uUmVzcG9uc2USdgoZR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZxIrLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBosLm1vZGVscy52MS5HZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USUgoNUHVibGlzaE1vZGVscxIfLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVxdWVzdBogLm1vZGVscy52MS5QdWJsaXNoTW9kZWxzUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USTwoMRGlzY2FyZERyYWZ0Eh4ubW9kZWxzLnYxLkRpc2NhcmREcmFmdFJlcXVlc3QaHy5tb2RlbHMudjEuRGlzY2FyZERyYWZ0UmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
871
+ var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui8AUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBARISCgVlbWJlZBgTIAEoCEgLiAEBQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQhAKDl9kZWZhdWx0X3ZhbHVlQgwKCl9pdGVtX3R5cGVCCgoIX3N0b3JhZ2VCEAoOX3RlbXBsYXRlX3pvbmVCDQoLX3pvbmVfb3JkZXJCEwoRX3JlZmVyZW5jZV9maWx0ZXJCDQoLX3ZhbGlkYXRpb25CDAoKX3F1ZXJ5YWJsZUIPCg1fcmVsYXRpb25zaGlwQggKBl9lbWJlZCJyCgxBY2Nlc3NDb25maWcSKgoLb3duZXJfcGxhbmUYASABKA4yFS5tb2RlbHMudjEuT3duZXJQbGFuZRIfChJkZWZhdWx0X3Zpc2liaWxpdHkYAiABKAlIAIgBAUIVChNfZGVmYXVsdF92aXNpYmlsaXR5IukGCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhgKC3BsdXJhbF9uYW1lGAcgASgJSACIAQESGAoLZGVzY3JpcHRpb24YCCABKAlIAYgBARIVCghjYXRlZ29yeRgJIAEoCUgCiAEBEhEKBGljb24YCiABKAlIA4gBARIaCg1kaXNwbGF5X2ZpZWxkGAsgASgJSASIAQESFQoNc3lzdGVtX2VudGl0eRgNIAEoCBIWCglkZWxldGFibGUYDiABKAhIBYgBARIVCghlZGl0YWJsZRgPIAEoCEgGiAEBEjUKD21ldGFkYXRhX3NjaGVtYRgQIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIrCgVob29rcxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIXCgpwbHVyYWxfa2V5GBIgASgJSAmIAQESLAoHbG9va3VwcxgTIAMoCzIbLm1vZGVscy52MS5Mb29rdXBEZWZpbml0aW9uEjkKDWNhY2hlX2NvbnRyb2wYFCABKAsyHS5tb2RlbHMudjEuQ2FjaGVDb250cm9sQ29uZmlnSAqIAQESLAoGYWNjZXNzGBUgASgLMhcubW9kZWxzLnYxLkFjY2Vzc0NvbmZpZ0gLiAEBEhEKCXNpbmdsZXRvbhgWIAEoCBISCgplbWJlZGRpbmdzGBggASgIEhEKCWhpZXJhcmNoeRgZIAEoCEIOCgxfcGx1cmFsX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jYXRlZ29yeUIHCgVfaWNvbkIQCg5fZGlzcGxheV9maWVsZEIMCgpfZGVsZXRhYmxlQgsKCV9lZGl0YWJsZUISChBfbWV0YWRhdGFfc2NoZW1hQggKBl9ob29rc0INCgtfcGx1cmFsX2tleUIQCg5fY2FjaGVfY29udHJvbEIJCgdfYWNjZXNzSgQIBRAGSgQIBhAHSgQIDBANSgQIFxAYUhBjdXN0b21lcl9jb250ZXh0Ug9jdXN0b21lcl9zY29wZWRSEW5hdHVyYWxfa2V5X2ZpZWxkUgdzaGFyaW5nIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKxAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIqCgtvd25lcl9wbGFuZRgGIAEoDjIVLm1vZGVscy52MS5Pd25lclBsYW5lSgQIBBAFSgQIBRAGUg9jdXN0b21lcl9zY29wZWRSD3NoYXJpbmdfZW5hYmxlZCKFCAoFTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSIAoGZmllbGRzGAQgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgFIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIWCgljb25maWdfaWQYBiABKAlIAIgBARIyCgxjYXBhYmlsaXRpZXMYByABKAsyHC5tb2RlbHMudjEuTW9kZWxDYXBhYmlsaXRpZXMSHwoSY3VycmVudF92ZXJzaW9uX2lkGAggASgJSAGIAQESJQoYcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyGAkgASgFSAKIAQESEQoJdGVuYW50X2lkGAogASgJEhIKCnByb2plY3RfaWQYCyABKAkSFwoKY3JlYXRlZF9ieRgUIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYFSABKAlIBIgBARIuCgpjcmVhdGVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsChJsYXN0X3B1c2hlZF9maWVsZHMYKCADKAsyEC5tb2RlbHMudjEuRmllbGQSNwoObGFzdF9wdXNoZWRfYXQYKSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYKiABKAlIBogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgrIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhcKCm93bmVyX2tpbmQYLiABKAlICYgBARIVCghvd25lcl9pZBgvIAEoCUgKiAEBEhIKCm92ZXJyaWRkZW4YMCABKAhCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDQoLX293bmVyX2tpbmRCCwoJX293bmVyX2lkSgQILRAuUg5zY2hlbWFfZHJpZnRlZCLCAgoMTW9kZWxWZXJzaW9uEgoKAmlkGAEgASgJEhAKCG1vZGVsX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEiAKBmZpZWxkcxgEIAMoCzIQLm1vZGVscy52MS5GaWVsZBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnki8QEKEkNyZWF0ZU1vZGVsUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIgCgZmaWVsZHMYAyADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAQgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESFgoJY29uZmlnX2lkGAUgASgJSAGIAQESHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAgSFQoIZ3JvdXBfaWQYByABKAlIAogBAUIJCgdfY29uZmlnQgwKCl9jb25maWdfaWRCCwoJX2dyb3VwX2lkIjYKE0NyZWF0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiHQoPR2V0TW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIjMKEEdldE1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiIwoUR2V0TW9kZWxCeUtleVJlcXVlc3QSCwoDa2V5GAEgASgJIjgKFUdldE1vZGVsQnlLZXlSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKMAgoRTGlzdE1vZGVsc1JlcXVlc3QSEgoFYWZ0ZXIYBiABKAlIAIgBARITCgZiZWZvcmUYByABKAlIAYgBARISCgVmaXJzdBgIIAEoBUgCiAEBEhEKBGxhc3QYCSABKAVIA4gBARIrCgV3aGVyZRgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCCAoGX3doZXJlSgQIARACSgQIAhADSgQIAxAESgQIBBAFSgQIBRAGUghjYXRlZ29yeVIJY29uZmlnX2lkUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2gikQEKEkxpc3RNb2RlbHNSZXNwb25zZRIgCgZtb2RlbHMYASADKAsyEC5tb2RlbHMudjEuTW9kZWwSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqECCg9Nb2RlbERlZmluaXRpb24SCgoCaWQYASABKAkSEgoKb3duZXJfa2luZBgCIAEoCRIWCg5sYXllcl9vd25lcl9pZBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSIAoGZmllbGRzGAcgAygLMhAubW9kZWxzLnYxLkZpZWxkEiYKBmNvbmZpZxgIIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZxIuCgpjcmVhdGVkX2F0GBQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLMAQobTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKqAQocTGlzdE1vZGVsRGVmaW5pdGlvbnNSZXNwb25zZRIvCgtkZWZpbml0aW9ucxgBIAMoCzIaLm1vZGVscy52MS5Nb2RlbERlZmluaXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIvICChJVcGRhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIVCg11cGRhdGVfZmllbGRzGAYgASgIEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAgSIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgKIAEoCUgDiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCI2ChNVcGRhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIigKGlJlbW92ZU1vZGVsT3ZlcnJpZGVSZXF1ZXN0EgoKAmlkGAEgASgJIj4KG1JlbW92ZU1vZGVsT3ZlcnJpZGVSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxEZWxldGVNb2RlbERlZmluaXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjAKHURlbGV0ZU1vZGVsRGVmaW5pdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7wEKHFVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEiAKBmZpZWxkcxgDIAMoCzIQLm1vZGVscy52MS5GaWVsZBIrCgZjb25maWcYBCABKAsyFi5tb2RlbHMudjEuTW9kZWxDb25maWdIAYgBARIVCg11cGRhdGVfZmllbGRzGAUgASgIEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgCiAEBQgcKBV9uYW1lQgkKB19jb25maWdCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiJACh1VcGRhdGVNb2RlbERlZmluaXRpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCKZAQoZTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIQCghtb2RlbF9pZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRISCgpvd25lcl9raW5kGAQgASgJEhAKCG93bmVyX2lkGAUgASgJEhIKCm92ZXJyaWRkZW4YBiABKAgSFQoNZGVmaW5pdGlvbl9pZBgHIAEoCSJKCiBHZXRQcm9qZWN0RWZmZWN0aXZlQ29uZmlnUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiwAEKIUdldFByb2plY3RFZmZlY3RpdmVDb25maWdSZXNwb25zZRI0CgZtb2RlbHMYASADKAsyJC5tb2RlbHMudjEuTW9kZWxFZmZlY3RpdmVDb25maWdFbnRyeRIVCghncm91cF9pZBgCIAEoCUgAiAEBEhcKCmdyb3VwX25hbWUYAyABKAlIAYgBARIZChFvdmVycmlkZXNfYWxsb3dlZBgEIAEoCEILCglfZ3JvdXBfaWRCDQoLX2dyb3VwX25hbWUiIAoSRGVsZXRlTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIiYKE0RlbGV0ZU1vZGVsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJGChVEdXBsaWNhdGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkSDwoHbmV3X2tleRgCIAEoCRIQCghuZXdfbmFtZRgDIAEoCSI5ChZEdXBsaWNhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIqQBChhMaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QioQEKGUxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USKQoIdmVyc2lvbnMYASADKAsyFy5tb2RlbHMudjEuTW9kZWxWZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyI+ChZHZXRNb2RlbFZlcnNpb25SZXF1ZXN0EhAKCG1vZGVsX2lkGAEgASgJEhIKCnZlcnNpb25faWQYAiABKAkiQwoXR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USKAoHdmVyc2lvbhgBIAEoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24iQgoaUmVzdG9yZU1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSI+ChtSZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiYwoURGVwcmVjYXRlZEZpZWxkVG91Y2gSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhEKCWZpZWxkX2tleRgEIAEoCSJWCiJNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXF1ZXN0EjAKB3RvdWNoZXMYASADKAsyHy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkVG91Y2giNgojTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USDwoHdXBkYXRlZBgBIAEoBSIhChNQdWJsaXNoTW9kZWxSZXF1ZXN0EgoKAmlkGAEgASgJIm0KFFB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFFB1Ymxpc2hNb2RlbHNSZXF1ZXN0EgsKA2lkcxgBIAMoCSJvChVQdWJsaXNoTW9kZWxzUmVzcG9uc2USIAoGbW9kZWxzGAEgAygLMhAubW9kZWxzLnYxLk1vZGVsEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIiMKFVVucHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSI5ChZVbnB1Ymxpc2hNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIioKHEdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiSgodR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIiEKE0Rpc2NhcmREcmFmdFJlcXVlc3QSCgoCaWQYASABKAkiNwoURGlzY2FyZERyYWZ0UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwioQEKG1NjaGVkdWxlTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCRIuCgpwdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCI/ChxTY2hlZHVsZU1vZGVsUHVibGlzaFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIjAKIkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiRgojQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwqqAMKCUZpZWxkVHlwZRIaChZGSUVMRF9UWVBFX1VOU1BFQ0lGSUVEEAASEwoPRklFTERfVFlQRV9URVhUEAESFQoRRklFTERfVFlQRV9OVU1CRVIQAhIWChJGSUVMRF9UWVBFX0JPT0xFQU4QAxITCg9GSUVMRF9UWVBFX0RBVEUQBBIVChFGSUVMRF9UWVBFX1NFTEVDVBAFEhMKD0ZJRUxEX1RZUEVfSlNPThAGEhMKD0ZJRUxEX1RZUEVfTElTVBAHEhQKEEZJRUxEX1RZUEVfTU9ERUwQCBIYChRGSUVMRF9UWVBFX1JFRkVSRU5DRRAJEhMKD0ZJRUxEX1RZUEVfRklMRRAKEhQKEEZJRUxEX1RZUEVfSU1BR0UQCxIUChBGSUVMRF9UWVBFX1ZJREVPEAwSFwoTRklFTERfVFlQRV9GTEVYSUJMRRANEhMKD0ZJRUxEX1RZUEVfRU5VTRAOEhcKE0ZJRUxEX1RZUEVfUklDSFRFWFQQDxIXChNGSUVMRF9UWVBFX0dFT1BPSU5UEBASFAoQRklFTERfVFlQRV9QUk9TRRARKqMBChBSZWxhdGlvbnNoaXBLaW5kEiEKHVJFTEFUSU9OU0hJUF9LSU5EX1VOU1BFQ0lGSUVEEAASIQodUkVMQVRJT05TSElQX0tJTkRfQVNTT0NJQVRJT04QARIhCh1SRUxBVElPTlNISVBfS0lORF9DT01QT1NJVElPThACEiYKIlJFTEFUSU9OU0hJUF9LSU5EX0FTU09DSUFUSU9OX1JFQUQQAypzCgpPd25lclBsYW5lEhsKF09XTkVSX1BMQU5FX1VOU1BFQ0lGSUVEEAASGAoUT1dORVJfUExBTkVfQ1VTVE9NRVIQARIVChFPV05FUl9QTEFORV9BRE1JThACEhcKE09XTkVSX1BMQU5FX1BST0pFQ1QQAyqbAQoRQ2FjaGVDb250cm9sU2NvcGUSIwofQ0FDSEVfQ09OVFJPTF9TQ09QRV9VTlNQRUNJRklFRBAAEh4KGkNBQ0hFX0NPTlRST0xfU0NPUEVfUFVCTElDEAESHwobQ0FDSEVfQ09OVFJPTF9TQ09QRV9QUklWQVRFEAISIAocQ0FDSEVfQ09OVFJPTF9TQ09QRV9OT19DQUNIRRADMpERCg1Nb2RlbHNTZXJ2aWNlEkMKCEdldE1vZGVsEhoubW9kZWxzLnYxLkdldE1vZGVsUmVxdWVzdBobLm1vZGVscy52MS5HZXRNb2RlbFJlc3BvbnNlElIKDUdldE1vZGVsQnlLZXkSHy5tb2RlbHMudjEuR2V0TW9kZWxCeUtleVJlcXVlc3QaIC5tb2RlbHMudjEuR2V0TW9kZWxCeUtleVJlc3BvbnNlEkkKCkxpc3RNb2RlbHMSHC5tb2RlbHMudjEuTGlzdE1vZGVsc1JlcXVlc3QaHS5tb2RlbHMudjEuTGlzdE1vZGVsc1Jlc3BvbnNlEmcKFExpc3RNb2RlbERlZmluaXRpb25zEiYubW9kZWxzLnYxLkxpc3RNb2RlbERlZmluaXRpb25zUmVxdWVzdBonLm1vZGVscy52MS5MaXN0TW9kZWxEZWZpbml0aW9uc1Jlc3BvbnNlEkwKC0NyZWF0ZU1vZGVsEh0ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVxdWVzdBoeLm1vZGVscy52MS5DcmVhdGVNb2RlbFJlc3BvbnNlEkwKC1VwZGF0ZU1vZGVsEh0ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVxdWVzdBoeLm1vZGVscy52MS5VcGRhdGVNb2RlbFJlc3BvbnNlEkwKC0RlbGV0ZU1vZGVsEh0ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVxdWVzdBoeLm1vZGVscy52MS5EZWxldGVNb2RlbFJlc3BvbnNlElUKDkR1cGxpY2F0ZU1vZGVsEiAubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVxdWVzdBohLm1vZGVscy52MS5EdXBsaWNhdGVNb2RlbFJlc3BvbnNlEmQKE1JlbW92ZU1vZGVsT3ZlcnJpZGUSJS5tb2RlbHMudjEuUmVtb3ZlTW9kZWxPdmVycmlkZVJlcXVlc3QaJi5tb2RlbHMudjEuUmVtb3ZlTW9kZWxPdmVycmlkZVJlc3BvbnNlEmoKFURlbGV0ZU1vZGVsRGVmaW5pdGlvbhInLm1vZGVscy52MS5EZWxldGVNb2RlbERlZmluaXRpb25SZXF1ZXN0GigubW9kZWxzLnYxLkRlbGV0ZU1vZGVsRGVmaW5pdGlvblJlc3BvbnNlEmoKFVVwZGF0ZU1vZGVsRGVmaW5pdGlvbhInLm1vZGVscy52MS5VcGRhdGVNb2RlbERlZmluaXRpb25SZXF1ZXN0GigubW9kZWxzLnYxLlVwZGF0ZU1vZGVsRGVmaW5pdGlvblJlc3BvbnNlEnYKGUdldFByb2plY3RFZmZlY3RpdmVDb25maWcSKy5tb2RlbHMudjEuR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZ1JlcXVlc3QaLC5tb2RlbHMudjEuR2V0UHJvamVjdEVmZmVjdGl2ZUNvbmZpZ1Jlc3BvbnNlElgKD0dldE1vZGVsVmVyc2lvbhIhLm1vZGVscy52MS5HZXRNb2RlbFZlcnNpb25SZXF1ZXN0GiIubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlc3BvbnNlEl4KEUxpc3RNb2RlbFZlcnNpb25zEiMubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBokLm1vZGVscy52MS5MaXN0TW9kZWxWZXJzaW9uc1Jlc3BvbnNlEmQKE1Jlc3RvcmVNb2RlbFZlcnNpb24SJS5tb2RlbHMudjEuUmVzdG9yZU1vZGVsVmVyc2lvblJlcXVlc3QaJi5tb2RlbHMudjEuUmVzdG9yZU1vZGVsVmVyc2lvblJlc3BvbnNlEk8KDFB1Ymxpc2hNb2RlbBIeLm1vZGVscy52MS5QdWJsaXNoTW9kZWxSZXF1ZXN0Gh8ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlc3BvbnNlElIKDVB1Ymxpc2hNb2RlbHMSHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsc1JlcXVlc3QaIC5tb2RlbHMudjEuUHVibGlzaE1vZGVsc1Jlc3BvbnNlElUKDlVucHVibGlzaE1vZGVsEiAubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVxdWVzdBohLm1vZGVscy52MS5VbnB1Ymxpc2hNb2RlbFJlc3BvbnNlEmoKFUdldE1vZGVsUHVibGlzaFN0YXR1cxInLm1vZGVscy52MS5HZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0GigubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEk8KDERpc2NhcmREcmFmdBIeLm1vZGVscy52MS5EaXNjYXJkRHJhZnRSZXF1ZXN0Gh8ubW9kZWxzLnYxLkRpc2NhcmREcmFmdFJlc3BvbnNlEmcKFFNjaGVkdWxlTW9kZWxQdWJsaXNoEiYubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVxdWVzdBonLm1vZGVscy52MS5TY2hlZHVsZU1vZGVsUHVibGlzaFJlc3BvbnNlEnwKG0NhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaBItLm1vZGVscy52MS5DYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXF1ZXN0Gi4ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlc3BvbnNlEnwKG01hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZBItLm1vZGVscy52MS5NYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXF1ZXN0Gi4ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlc3BvbnNlQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9tb2RlbHMvdjE7bW9kZWxzdjFiBnByb3RvMw", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
853
872
  var RelationshipConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 0);
854
873
  var FieldSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 1);
855
874
  var AccessConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 2);
@@ -899,7 +918,7 @@ var RuleExpressionSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expr
899
918
  var RuleOperandSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_expressions, 1);
900
919
 
901
920
  // ../../packages/proto-ts/src/records/v1/records_pb.js
902
- var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi2g0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEh0KEG1vZGVsX3ZlcnNpb25faWQYRiABKAlIGogBAUIOCgxfbmF0dXJhbF9rZXlCDAoKX3BhcmVudF9pZEILCglfbWV0YWRhdGFCCwoJX293bmVyX2lkQg0KC19vd25lcl9raW5kQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD192ZXJzaW9uX251bWJlckIPCg1fY29udGVudF9oYXNoQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CEQoPX3B1Ymxpc2hfc3RhdHVzQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdEITChFfcHVibGlzaF9iYXRjaF9pZEIOCgxfdmFyaWFudF9rZXlCDwoNX3ZhcmlhbnRfbmFtZUIWChRfdmFyaWFudF9kZXNjcmlwdGlvbkINCgtfY2F0YWxvZ19pZEILCglfcHJpb3JpdHlCEgoQX3RhcmdldGluZ19ydWxlc0INCgtfaXNfZGVmYXVsdEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg8KDV9wdWJsaXNoZWRfYXRCDwoNX3B1Ymxpc2hlZF9ieUITChFfbW9kZWxfdmVyc2lvbl9pZCL1AQoPUHVibGlzaFNjaGVkdWxlEhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYBSABKAlIAYgBAUIPCg1fdW5wdWJsaXNoX2F0Qg0KC19jcmVhdGVkX2J5Ii4KCVNvcnRGaWVsZBINCgVmaWVsZBgBIAEoCRISCgpkZXNjZW5kaW5nGAIgASgIIv8BCg5CYXRjaE9wZXJhdGlvbhIsCgR0eXBlGAEgASgOMh4ucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvblR5cGUSDwoCaWQYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARIYCgtuYXR1cmFsX2tleRgEIAEoCUgCiAEBEioKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFQoIb3duZXJfaWQYBiABKAlIBIgBAUIFCgNfaWRCDAoKX21vZGVsX2tleUIOCgxfbmF0dXJhbF9rZXlCBwoFX2RhdGFCCwoJX293bmVyX2lkIogBChRCYXRjaE9wZXJhdGlvblJlc3VsdBINCgVpbmRleBgBIAEoBRIPCgdzdWNjZXNzGAIgASgIEicKBnJlY29yZBgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESEgoFZXJyb3IYBCABKAlIAYgBAUIJCgdfcmVjb3JkQggKBl9lcnJvciKSAgoTQ3JlYXRlUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBARIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCghvd25lcl9pZBgEIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgDiAEBQg4KDF9uYXR1cmFsX2tleUILCglfb3duZXJfaWRCCwoJX21ldGFkYXRhQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ipgEKFENyZWF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEigKB3ZhcmlhbnQYAiABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEigKB3ZlcnNpb24YAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgBiAEBQgoKCF92YXJpYW50QgoKCF92ZXJzaW9uIh4KEEdldFJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkiNwoRR2V0UmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiPwoVR2V0UmVjb3JkQnlLZXlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtuYXR1cmFsX2tleRgCIAEoCSI8ChZHZXRSZWNvcmRCeUtleVJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkIKGUdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhIKCmlkZW50aWZpZXIYAiABKAkiQAoaR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQi4gIKEkxpc3RSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSIwoEc29ydBgCIAMoCzIVLnJlY29yZHMudjEuU29ydEZpZWxkEhUKCG93bmVyX2lkGAMgASgJSACIAQESEwoGc2VhcmNoGAQgASgJSAGIAQESDwoHcHJldmlldxgFIAEoCBIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARISCgVhZnRlchgHIAEoCUgDiAEBEhMKBmJlZm9yZRgIIAEoCUgEiAEBEhIKBWZpcnN0GAkgASgFSAWIAQESEQoEbGFzdBgKIAEoBUgGiAEBQgsKCV9vd25lcl9pZEIJCgdfc2VhcmNoQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgLEAxKBAgMEA1KBAgNEA4ilQEKE0xpc3RSZWNvcmRzUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLYAgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRInCgZ1cGRhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESGAoLdmFyaWFudF9rZXkYBCABKAlIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIyCgxyZXBsYWNlX2RhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQitwEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJhChxCYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEh4KFmxvb2t1cHNfcmVjb3Jkc193YWxrZWQYASABKAUSIQoZcXVlcnlhYmxlX3JlY29yZHNfaW5kZXhlZBgCIAEoBSJWChZEdXBsaWNhdGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhwKD25ld19uYXR1cmFsX2tleRgCIAEoCUgAiAEBQhIKEF9uZXdfbmF0dXJhbF9rZXkiPQoXRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiUAobRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXF1ZXN0EgsKA2lkcxgBIAMoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkMKHER1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFVB1Ymxpc2hWZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIjwKFlB1Ymxpc2hWZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoWVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKgoXVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChZSZXZlcnRUb1ZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPQoXUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQipgEKGUxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QSEQoJcGFyZW50X2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Ip0BChpMaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJbCh5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoDa2V5GAMgASgJSACIAQFCBgoEX2tleSJ7Ch9DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIYChBjYXRhbG9nX2VudHJ5X2lkGAIgASgJEhkKEWNhdGFsb2dfZW50cnlfa2V5GAMgASgJIpoBChRVcGRhdGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjQKDm1ldGFkYXRhX3BhdGNoGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQhEKD19tZXRhZGF0YV9wYXRjaCI8ChVVcGRhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIioKFERlbGV0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkiKAoVRGVsZXRlVmFyaWFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgidgoVU2V0UmVjb3JkT3duZXJSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIVCghvd25lcl9pZBgCIAEoCUgAiAEBEhcKCm93bmVyX2tpbmQYAyABKAlIAYgBAUILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmQiPAoWU2V0UmVjb3JkT3duZXJSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKpAgodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARISCgVhZnRlchgEIAEoCUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBEhIKBWZpcnN0GAYgASgFSAWIAQESEQoEbGFzdBgHIAEoBUgGiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUijQIKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARISCgVhZnRlchgGIAEoCUgCiAEBEhMKBmJlZm9yZRgHIAEoCUgDiAEBEhIKBWZpcnN0GAggASgFSASIAQESEQoEbGFzdBgJIAEoBUgFiAEBEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAMQBEoECAQQBVIFbGltaXRSBm9mZnNldCKcAQoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIt8BChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCBISCgp1bnJlc29sdmVkGAcgASgIQg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEoECAYQB1IKdmlld2VyX2tleSJKChtCYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USKwoHcmVjb3JkcxgBIAMoCzIaLnJlY29yZHMudjEuUmVzb2x2ZWRSZWNvcmQixwEKFVJlc29sdmVDb250ZW50UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYAyABKAlIAIgBARItCgdjb250ZXh0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEg8KB3ByZXZpZXcYBSABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0Ij8KFlJlc29sdmVDb250ZW50UmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiswUKDlJlc29sdmVkUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKdmFyaWFudF9pZBgGIAEoCUgBiAEBEhEKCWhhc19kcmFmdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCghvd25lcl9pZBgLIAEoCUgCiAEBEhcKCm93bmVyX2tpbmQYDCABKAlIA4gBARIYCgt2YXJpYW50X2tleRgNIAEoCUgEiAEBEjoKCHNlZ21lbnRzGA4gAygLMigucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZC5TZWdtZW50c0VudHJ5EisKC3Jlc29sdmVkX2J5GA8gASgOMhYucmVjb3Jkcy52MS5SZXNvbHZlZEJ5EjkKDmZpZWxkX3ZhcmlhbnRzGBAgAygLMiEucmVjb3Jkcy52MS5GaWVsZFZhcmlhbnRTZWxlY3Rpb24aLwoNU2VnbWVudHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBQg4KDF9uYXR1cmFsX2tleUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmRCDgoMX3ZhcmlhbnRfa2V5SgQIBxAIUhNleHBlcmltZW50X2V4cG9zdXJlIkAKFUZpZWxkVmFyaWFudFNlbGVjdGlvbhISCgpmaWVsZF9wYXRoGAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSLWAQoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFwoPY3Jvc3Nfd29ya3NwYWNlGAcgASgIQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC1IFbGltaXQiuAEKEFNlYXJjaFJlc3VsdEl0ZW0SCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDQoFc2NvcmUYBSABKAESEQoJdGVuYW50X2lkGAYgASgJEhIKCnByb2plY3RfaWQYByABKAlCDgoMX25hdHVyYWxfa2V5IqABChRHbG9iYWxTZWFyY2hSZXNwb25zZRItCgdyZWNvcmRzGAEgAygLMhwucmVjb3Jkcy52MS5TZWFyY2hSZXN1bHRJdGVtEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKhAQoORW1iZWRkaW5nU3RhdHMSEQoJbW9kZWxfa2V5GAEgASgJEhUKDXRvdGFsX3JlY29yZHMYAiABKAUSGAoQZW1iZWRkZWRfcmVjb3JkcxgDIAEoBRIXCg9wZW5kaW5nX3JlY29yZHMYBCABKAUSHQoQbGFzdF9lbWJlZGRlZF9hdBgFIAEoCUgAiAEBQhMKEV9sYXN0X2VtYmVkZGVkX2F0InUKD1JlY29yZEVtYmVkZGluZxIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhIKCmRpbWVuc2lvbnMYAyABKAUSGAoLZW1iZWRkZWRfYXQYBCABKAlIAIgBAUIOCgxfZW1iZWRkZWRfYXQikwEKDVNpbWlsYXJSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKc2ltaWxhcml0eRgFIAEoAUIOCgxfbmF0dXJhbF9rZXkiQAoYR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiRgoZR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRIpCgVzdGF0cxgBIAMoCzIaLnJlY29yZHMudjEuRW1iZWRkaW5nU3RhdHMiLwoaR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIk4KG0dldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRIvCgplbWJlZGRpbmdzGAEgAygLMhsucmVjb3Jkcy52MS5SZWNvcmRFbWJlZGRpbmci2QEKGUZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtSBWxpbWl0IpQBChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyLhAQoWV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDgoGdmVjdG9yGAIgAygCEhIKCmRpbWVuc2lvbnMYAyABKAUSFQoIcHJvdmlkZXIYBCABKAlIAIgBARIXCgptb2RlbF9uYW1lGAUgASgJSAGIAQESEAoDa2V5GAYgASgJSAKIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAOIAQFCCwoJX3Byb3ZpZGVyQg0KC19tb2RlbF9uYW1lQgYKBF9rZXlCDwoNX2NvbnRlbnRfaGFzaCIqChdXcml0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKF0RlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIrChhEZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJnCh9FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSEwoGc291cmNlGAMgASgJSACIAQFCCQoHX3NvdXJjZSI0CiBFbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRIQCghlbnF1ZXVlZBgBIAEoCCLaAQoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtSBWxpbWl0IpIBChhTZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2USKgoHcmVzdWx0cxgBIAMoCzIZLnJlY29yZHMudjEuU2ltaWxhclJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8iiQEKHlJlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEAoDa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBQgYKBF9rZXlCCAoGX2FmdGVyQggKBl9maXJzdCJVChZNaXNzaW5nRW1iZWRkaW5nUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIYCgtuYXR1cmFsX2tleRgCIAEoCUgAiAEBQg4KDF9uYXR1cmFsX2tleSKxAQofUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXNwb25zZRIzCgdyZWNvcmRzGAEgAygLMiIucmVjb3Jkcy52MS5NaXNzaW5nRW1iZWRkaW5nUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAkSDQoFdG90YWwYBCABKAVCDAoKX3BhZ2VfaW5mbyJtChdFbWJlZGRpbmdEaWdlc3RzUmVxdWVzdBISCgpyZWNvcmRfaWRzGAEgAygJEhAKA2tleRgCIAEoCUgAiAEBEhYKCW1vZGVsX2tleRgDIAEoCUgBiAEBQgYKBF9rZXlCDAoKX21vZGVsX2tleSJQCg9FbWJlZGRpbmdEaWdlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhkKDGNvbnRlbnRfaGFzaBgCIAEoCUgAiAEBQg8KDV9jb250ZW50X2hhc2giSAoYRW1iZWRkaW5nRGlnZXN0c1Jlc3BvbnNlEiwKB2RpZ2VzdHMYASADKAsyGy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdCKXAQoMTmVhcmJ5UmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKD2Rpc3RhbmNlX21ldGVycxgFIAEoAUIOCgxfbmF0dXJhbF9rZXkimQIKF1NlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0EgsKA2xhdBgBIAEoARILCgNsbmcYAiABKAESGgoNcmFkaXVzX21ldGVycxgDIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgEIAEoCUgBiAEBEhAKA2tleRgFIAEoCUgCiAEBEhIKBWFmdGVyGAYgASgJSAOIAQESEwoGYmVmb3JlGAcgASgJSASIAQESEgoFZmlyc3QYCCABKAVIBYgBARIRCgRsYXN0GAkgASgFSAaIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIGCgRfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKRAQoYU2VhcmNoQnlMb2NhdGlvblJlc3BvbnNlEikKB3Jlc3VsdHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i+gEKGUZpbmROZWFyZXN0UmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhoKDXJhZGl1c19tZXRlcnMYAiABKAFIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQhAKDl9yYWRpdXNfbWV0ZXJzQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpMBChpGaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRIpCgdyZWNvcmRzGAEgAygLMhgucmVjb3Jkcy52MS5OZWFyYnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlQKFU1pc3NpbmdHZW9tZXRyeVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiiAEKHVJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0Iq8BCh5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVzcG9uc2USMgoHcmVjb3JkcxgBIAMoCzIhLnJlY29yZHMudjEuTWlzc2luZ0dlb21ldHJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAkSDQoFdG90YWwYBCABKAVCDAoKX3BhZ2VfaW5mbyIyCh1CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiOQoeQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlc3BvbnNlEhcKD3JlY29yZHNfaW5kZXhlZBgBIAEoBSKfAgoTTG9va3VwUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESGAoLY3VzdG9tZXJfaWQYByABKAlIAogBARI2ChBjdXN0b21lcl9jb250ZXh0GAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCDgoMX2N1c3RvbWVyX2lkQhMKEV9jdXN0b21lcl9jb250ZXh0IjwKFExvb2t1cFJlY29yZFJlc3BvbnNlEhYKCXJlY29yZF9pZBgBIAEoCUgAiAEBQgwKCl9yZWNvcmRfaWQi6QEKHkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESHgoRZXhjbHVkZV9yZWNvcmRfaWQYByABKAlIAogBAUINCgtfdmFyaWFudF9pZEIJCgdfbG9jYWxlQhQKEl9leGNsdWRlX3JlY29yZF9pZCI0Ch9DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlc3BvbnNlEhEKCWF2YWlsYWJsZRgBIAEoCCKXAQoUTG9va3VwQ29uZmxpY3REZXRhaWwSEQoJbW9kZWxfa2V5GAEgASgJEhMKC2xvb2t1cF9uYW1lGAIgASgJEg8KB2NoYW5uZWwYAyABKAkSFwoKdmFyaWFudF9pZBgEIAEoCUgAiAEBEhMKBmxvY2FsZRgFIAEoCUgBiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGUi4gEKGkxpc3RMb29rdXBDb25mbGljdHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtsb29rdXBfbmFtZRgCIAEoCUgAiAEBEg8KB2NoYW5uZWwYAyABKAkSEgoFZmlyc3QYBCABKAVIAYgBARISCgVhZnRlchgFIAEoCUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARITCgZiZWZvcmUYByABKAlIBIgBAUIOCgxfbG9va3VwX25hbWVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqMBChtMaXN0TG9va3VwQ29uZmxpY3RzUmVzcG9uc2USKQoGZ3JvdXBzGAEgAygLMhkucmVjb3Jkcy52MS5Db25mbGljdEdyb3VwEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKVAQoNQ29uZmxpY3RHcm91cBITCgtlbmNvZGVkX2tleRgBIAEoCRIPCgdjaGFubmVsGAIgASgJEhcKCnZhcmlhbnRfaWQYAyABKAlIAIgBARIVCghvd25lcl9pZBgEIAEoCUgBiAEBEhIKCnJlY29yZF9pZHMYBSADKAlCDQoLX3ZhcmlhbnRfaWRCCwoJX293bmVyX2lkIi8KGlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI1ChtSZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USFgoOcmVjb3Jkc193YWxrZWQYASABKAUiTgoZUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEQoJaWRfb3Jfa2V5GAIgASgJEgsKA2FsbBgDIAEoCCJ+ChpQdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRINCgVzY29wZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglyZWNvcmRfaWQYBCABKAkSFwoPcmVjb3Jkc19zY2FubmVkGAUgASgFIo0BCiJMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXNSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkSGQoMcmVzb3VyY2Vfa2V5GAIgASgJSACIAQESFgoJcm93X2xpbWl0GAMgASgFSAGIAQFCDwoNX3Jlc291cmNlX2tleUIMCgpfcm93X2xpbWl0IlkKI0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEjIKB2VudHJpZXMYASADKAsyIS5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JFbnRyeSKrAQoVU2xvd1F1ZXJ5QWR2aXNvckVudHJ5EhUKDXJlc291cmNlX3R5cGUYASABKAkSFAoMcmVzb3VyY2Vfa2V5GAIgASgJEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAkSDQoFY291bnQYBSABKAMSMAoMbGFzdF9zZWVuX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI3Ch5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCSJhCh9TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlc3BvbnNlEj4KCXJlc291cmNlcxgBIAMoCzIrLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclJlc291cmNlU3VtbWFyeSJgCh9TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5EhQKDHJlc291cmNlX2tleRgBIAEoCRITCgtlbnRyeV9jb3VudBgCIAEoBRISCgp0b3RhbF9oaXRzGAMgASgDIowBCiFDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARISCgpmaWVsZF9wYXRoGAMgASgJEhAKCG9wZXJhdG9yGAQgASgJQg8KDV9yZXNvdXJjZV9rZXkiJAoiQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZSKZAQohUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXF1ZXN0EhIKCmNhdGFsb2dfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQggKBl9maXJzdCKAAQoZVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESEwoLdXNhZ2VfbGV2ZWwYBCABKAlCDgoMX25hdHVyYWxfa2V5IrcBCiJSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjYKB3JlY29yZHMYASADKAsyJS5yZWNvcmRzLnYxLlZhcmlhbnRDYXRhbG9nVXNhZ2VSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvInwKG1JlY29yZHNNaXNzaW5nTG9jYWxlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDgoGbG9jYWxlGAIgASgJEhIKBWFmdGVyGAMgASgJSACIAQESEgoFZmlyc3QYBCABKAVIAYgBAUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlIKE01pc3NpbmdMb2NhbGVSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IqsBChxSZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEjAKB3JlY29yZHMYASADKAsyHy5yZWNvcmRzLnYxLk1pc3NpbmdMb2NhbGVSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvKnMKClJlY29yZFR5cGUSGwoXUkVDT1JEX1RZUEVfVU5TUEVDSUZJRUQQABIWChJSRUNPUkRfVFlQRV9SRUNPUkQQARIXChNSRUNPUkRfVFlQRV9WQVJJQU5UEAISFwoTUkVDT1JEX1RZUEVfVkVSU0lPThADKp0BChJCYXRjaE9wZXJhdGlvblR5cGUSJAogQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVU5TUEVDSUZJRUQQABIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9DUkVBVEUQARIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9VUERBVEUQAhIfChtCQVRDSF9PUEVSQVRJT05fVFlQRV9ERUxFVEUQAyp2CgpSZXNvbHZlZEJ5EhsKF1JFU09MVkVEX0JZX1VOU1BFQ0lGSUVEEAASGAoUUkVTT0xWRURfQllfVEFSR0VURUQQARIXChNSRVNPTFZFRF9CWV9ERUZBVUxUEAISGAoUUkVTT0xWRURfQllfRkFMTEJBQ0sQAzKrLgoOUmVjb3Jkc1NlcnZpY2USUQoMQ3JlYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5DcmVhdGVSZWNvcmRSZXNwb25zZRJICglHZXRSZWNvcmQSHC5yZWNvcmRzLnYxLkdldFJlY29yZFJlcXVlc3QaHS5yZWNvcmRzLnYxLkdldFJlY29yZFJlc3BvbnNlElcKDkdldFJlY29yZEJ5S2V5EiEucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlcXVlc3QaIi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVzcG9uc2USYwoSR2V0UmVjb3JkQnlLZXlPcklkEiUucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0GiYucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleU9ySWRSZXNwb25zZRJOCgtMaXN0UmVjb3JkcxIeLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXF1ZXN0Gh8ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1Jlc3BvbnNlElEKDFVwZGF0ZVJlY29yZBIfLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBkYXRlUmVjb3JkUmVzcG9uc2USVwoOQXV0b1NhdmVSZWNvcmQSIS5yZWNvcmRzLnYxLkF1dG9TYXZlUmVjb3JkUmVxdWVzdBoiLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXNwb25zZRJRCgxVcHNlcnRSZWNvcmQSHy5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwc2VydFJlY29yZFJlc3BvbnNlElEKDERlbGV0ZVJlY29yZBIfLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuRGVsZXRlUmVjb3JkUmVzcG9uc2USVwoOU2V0UmVjb3JkT3duZXISIS5yZWNvcmRzLnYxLlNldFJlY29yZE93bmVyUmVxdWVzdBoiLnJlY29yZHMudjEuU2V0UmVjb3JkT3duZXJSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USbwoWQmFja2ZpbGxRdWVyeWFibGVJbmRleBIpLnJlY29yZHMudjEuQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRJpChRCYWNrZmlsbE1vZGVsSW5kZXhlcxInLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEn4KG0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllcxIuLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBovLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2UScgoXU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnkSKi5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBorLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRJ7ChpDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeRItLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5DbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2UScgoXQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnQSKi5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVxdWVzdBorLnJlY29yZHMudjEuQ2FwdHVyZURlZmF1bHRBc1ZhcmlhbnRSZXNwb25zZRJUCg1VcGRhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5VcGRhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlc3BvbnNlElQKDURlbGV0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkRlbGV0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVzcG9uc2USYAoRU2V0RGVmYXVsdFZhcmlhbnQSJC5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVxdWVzdBolLnJlY29yZHMudjEuU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRJjChJMaXN0UmVjb3JkVmFyaWFudHMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEmwKFVNjaGVkdWxlUmVjb3JkUHVibGlzaBIoLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVxdWVzdBopLnJlY29yZHMudjEuU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USgQEKHENhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2gSLy5yZWNvcmRzLnYxLkNhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0GjAucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVzcG9uc2USbwoWTGlzdFNjaGVkdWxlZFB1Ymxpc2hlcxIpLnJlY29yZHMudjEuTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QaKi5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXNwb25zZRJmChNHZXRTY2hlZHVsZWRQdWJsaXNoEiYucmVjb3Jkcy52MS5HZXRTY2hlZHVsZWRQdWJsaXNoUmVxdWVzdBonLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEmAKEUxpc3REcmFmdFZlcnNpb25zEiQucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkxpc3REcmFmdFZlcnNpb25zUmVzcG9uc2USaQoUQmF0Y2hQdWJsaXNoVmVyc2lvbnMSJy5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVxdWVzdBooLnJlY29yZHMudjEuQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRJmChNCYXRjaFJlc29sdmVSZWNvcmRzEiYucmVjb3Jkcy52MS5CYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBonLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlElcKDlJlc29sdmVDb250ZW50EiEucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlcXVlc3QaIi5yZWNvcmRzLnYxLlJlc29sdmVDb250ZW50UmVzcG9uc2USYwoSTG9va3VwUmVjb3JkTW9kZWxzEiUucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRNb2RlbHNSZXNwb25zZRJRCgxHbG9iYWxTZWFyY2gSHy5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlcXVlc3QaIC5yZWNvcmRzLnYxLkdsb2JhbFNlYXJjaFJlc3BvbnNlElEKDExvb2t1cFJlY29yZBIfLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuTG9va3VwUmVjb3JkUmVzcG9uc2UScgoXQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHkSKi5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBorLnJlY29yZHMudjEuQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXNwb25zZRJmChNMaXN0TG9va3VwQ29uZmxpY3RzEiYucmVjb3Jkcy52MS5MaXN0TG9va3VwQ29uZmxpY3RzUmVxdWVzdBonLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1Jlc3BvbnNlEmYKE1JlYnVpbGRNb2RlbExvb2t1cHMSJi5yZWNvcmRzLnYxLlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0GicucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USYwoSUHVyZ2VSZXNwb25zZUNhY2hlEiUucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXF1ZXN0GiYucmVjb3Jkcy52MS5QdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRJyChdSZWNvcmRzTWlzc2luZ0VtYmVkZGluZxIqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0GisucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEl0KEEVtYmVkZGluZ0RpZ2VzdHMSIy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0GiQucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USdQoYRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nEisucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0GiwucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRJdChBTZWFyY2hCeUxvY2F0aW9uEiMucmVjb3Jkcy52MS5TZWFyY2hCeUxvY2F0aW9uUmVxdWVzdBokLnJlY29yZHMudjEuU2VhcmNoQnlMb2NhdGlvblJlc3BvbnNlEmMKEkZpbmROZWFyZXN0UmVjb3JkcxIlLnJlY29yZHMudjEuRmluZE5lYXJlc3RSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZE5lYXJlc3RSZWNvcmRzUmVzcG9uc2USbwoWUmVjb3Jkc01pc3NpbmdHZW9tZXRyeRIpLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlcXVlc3QaKi5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXNwb25zZRJvChZCYWNrZmlsbFJlY29yZEdlb21ldHJ5EikucmVjb3Jkcy52MS5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVxdWVzdBoqLnJlY29yZHMudjEuQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlc3BvbnNlEnsKGlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nEi0ucmVjb3Jkcy52MS5SZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1JlcXVlc3QaLi5yZWNvcmRzLnYxLlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVzcG9uc2USaQoUUmVjb3Jkc01pc3NpbmdMb2NhbGUSJy5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nTG9jYWxlUmVxdWVzdBooLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
921
+ var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEi2g0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIVCghvd25lcl9pZBgIIAEoCUgDiAEBEhcKCm93bmVyX2tpbmQYCSABKAlIBIgBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAWIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgGiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKDnZlcnNpb25fbnVtYmVyGCggASgFSAeIAQESGQoMY29udGVudF9oYXNoGCkgASgJSAiIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGCogASgJSAmIAQESGwoOcHVibGlzaF9zdGF0dXMYKyABKAlICogBARI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBgsIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIC4gBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GC0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEh0KEHB1Ymxpc2hfYmF0Y2hfaWQYLiABKAlIDYgBARIYCgt2YXJpYW50X2tleRgyIAEoCUgOiAEBEhkKDHZhcmlhbnRfbmFtZRgzIAEoCUgPiAEBEiAKE3ZhcmlhbnRfZGVzY3JpcHRpb24YNCABKAlIEIgBARIXCgpjYXRhbG9nX2lkGDUgASgJSBGIAQESFQoIcHJpb3JpdHkYNiABKAVIEogBARI8Cg90YXJnZXRpbmdfcnVsZXMYNyABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgTiAEBEhcKCmlzX2RlZmF1bHQYOCABKAhIFIgBARIfChJjdXJyZW50X3ZlcnNpb25faWQYPCABKAlIFYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBg9IAEoCUgWiAEBEiUKGHB1Ymxpc2hlZF92ZXJzaW9uX251bWJlchg+IAEoBUgXiAEBEjUKDHB1Ymxpc2hlZF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIGIgBARIZCgxwdWJsaXNoZWRfYnkYQCABKAlIGYgBARITCgtjYW5fcHVibGlzaBhBIAEoCBIVCg1jYW5fdW5wdWJsaXNoGEIgASgIEh8KF2hhc191bnB1Ymxpc2hlZF9jaGFuZ2VzGEMgASgIEh0KEG1vZGVsX3ZlcnNpb25faWQYRiABKAlIGogBAUIOCgxfbmF0dXJhbF9rZXlCDAoKX3BhcmVudF9pZEILCglfbWV0YWRhdGFCCwoJX293bmVyX2lkQg0KC19vd25lcl9raW5kQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhEKD192ZXJzaW9uX251bWJlckIPCg1fY29udGVudF9oYXNoQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CEQoPX3B1Ymxpc2hfc3RhdHVzQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdEITChFfcHVibGlzaF9iYXRjaF9pZEIOCgxfdmFyaWFudF9rZXlCDwoNX3ZhcmlhbnRfbmFtZUIWChRfdmFyaWFudF9kZXNjcmlwdGlvbkINCgtfY2F0YWxvZ19pZEILCglfcHJpb3JpdHlCEgoQX3RhcmdldGluZ19ydWxlc0INCgtfaXNfZGVmYXVsdEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIbChlfcHVibGlzaGVkX3ZlcnNpb25fbnVtYmVyQg8KDV9wdWJsaXNoZWRfYXRCDwoNX3B1Ymxpc2hlZF9ieUITChFfbW9kZWxfdmVyc2lvbl9pZCL1AQoPUHVibGlzaFNjaGVkdWxlEhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEi4KCmNyZWF0ZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYBSABKAlIAYgBAUIPCg1fdW5wdWJsaXNoX2F0Qg0KC19jcmVhdGVkX2J5Ii4KCVNvcnRGaWVsZBINCgVmaWVsZBgBIAEoCRISCgpkZXNjZW5kaW5nGAIgASgIIv8BCg5CYXRjaE9wZXJhdGlvbhIsCgR0eXBlGAEgASgOMh4ucmVjb3Jkcy52MS5CYXRjaE9wZXJhdGlvblR5cGUSDwoCaWQYAiABKAlIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARIYCgtuYXR1cmFsX2tleRgEIAEoCUgCiAEBEioKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFQoIb3duZXJfaWQYBiABKAlIBIgBAUIFCgNfaWRCDAoKX21vZGVsX2tleUIOCgxfbmF0dXJhbF9rZXlCBwoFX2RhdGFCCwoJX293bmVyX2lkIogBChRCYXRjaE9wZXJhdGlvblJlc3VsdBINCgVpbmRleBgBIAEoBRIPCgdzdWNjZXNzGAIgASgIEicKBnJlY29yZBgDIAEoCzISLnJlY29yZHMudjEuUmVjb3JkSACIAQESEgoFZXJyb3IYBCABKAlIAYgBAUIJCgdfcmVjb3JkQggKBl9lcnJvciKSAgoTQ3JlYXRlUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBARIlCgRkYXRhGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIVCghvd25lcl9pZBgEIAEoCUgBiAEBEi4KCG1ldGFkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCUgDiAEBQg4KDF9uYXR1cmFsX2tleUILCglfb3duZXJfaWRCCwoJX21ldGFkYXRhQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ipgEKFENyZWF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkEigKB3ZhcmlhbnQYAiABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEigKB3ZlcnNpb24YAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgBiAEBQgoKCF92YXJpYW50QgoKCF92ZXJzaW9uIh4KEEdldFJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkiNwoRR2V0UmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiPwoVR2V0UmVjb3JkQnlLZXlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtuYXR1cmFsX2tleRgCIAEoCSI8ChZHZXRSZWNvcmRCeUtleVJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkIKGUdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhIKCmlkZW50aWZpZXIYAiABKAkiQAoaR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQi4gIKEkxpc3RSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSIwoEc29ydBgCIAMoCzIVLnJlY29yZHMudjEuU29ydEZpZWxkEhUKCG93bmVyX2lkGAMgASgJSACIAQESEwoGc2VhcmNoGAQgASgJSAGIAQESDwoHcHJldmlldxgFIAEoCBIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARISCgVhZnRlchgHIAEoCUgDiAEBEhMKBmJlZm9yZRgIIAEoCUgEiAEBEhIKBWZpcnN0GAkgASgFSAWIAQESEQoEbGFzdBgKIAEoBUgGiAEBQgsKCV9vd25lcl9pZEIJCgdfc2VhcmNoQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgLEAxKBAgMEA1KBAgNEA4ilQEKE0xpc3RSZWNvcmRzUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLYAgoTVXBkYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRInCgZ1cGRhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESGAoLdmFyaWFudF9rZXkYBCABKAlIAYgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBSABKAlIAogBARIyCgxyZXBsYWNlX2RhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESLgoIbWV0YWRhdGEYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCDgoMX25hdHVyYWxfa2V5Qg4KDF92YXJpYW50X2tleUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg8KDV9yZXBsYWNlX2RhdGFCCwoJX21ldGFkYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQitwEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlSgQIBBAFSgQIBRAGUgx0eXBlZF91cGRhdGUiNwoZQnVsa1VwZGF0ZVJlY29yZHNSZXNwb25zZRINCgVjb3VudBgBIAEoBRILCgNpZHMYAiADKAkiMgodQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjkKHkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRIXCg9yZWNvcmRzX2luZGV4ZWQYASABKAUiMAobQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSJhChxCYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEh4KFmxvb2t1cHNfcmVjb3Jkc193YWxrZWQYASABKAUSIQoZcXVlcnlhYmxlX3JlY29yZHNfaW5kZXhlZBgCIAEoBSJWChZEdXBsaWNhdGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhwKD25ld19uYXR1cmFsX2tleRgCIAEoCUgAiAEBQhIKEF9uZXdfbmF0dXJhbF9rZXkiPQoXRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiUAobRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXF1ZXN0EgsKA2lkcxgBIAMoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkMKHER1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USIwoHcmVjb3JkcxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFVB1Ymxpc2hWZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIjwKFlB1Ymxpc2hWZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKwoWVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkiKgoXVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChZSZXZlcnRUb1ZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiPQoXUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USIgoGcmVjb3JkGAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQipgEKGUxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QSEQoJcGFyZW50X2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Ip0BChpMaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJlChRDcmVhdGVWYXJpYW50UmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEwoLdmFyaWFudF9rZXkYAiABKAkSJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPAoVQ3JlYXRlVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJbCh5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSEAoDa2V5GAMgASgJSACIAQFCBgoEX2tleSJ7Ch9DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlc3BvbnNlEiMKB3ZhcmlhbnQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIYChBjYXRhbG9nX2VudHJ5X2lkGAIgASgJEhkKEWNhdGFsb2dfZW50cnlfa2V5GAMgASgJIpoBChRVcGRhdGVWYXJpYW50UmVxdWVzdBISCgp2YXJpYW50X2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjQKDm1ldGFkYXRhX3BhdGNoGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQhEKD19tZXRhZGF0YV9wYXRjaCI8ChVVcGRhdGVWYXJpYW50UmVzcG9uc2USIwoHdmFyaWFudBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIioKFERlbGV0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkiKAoVRGVsZXRlVmFyaWFudFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgidgoVU2V0UmVjb3JkT3duZXJSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIVCghvd25lcl9pZBgCIAEoCUgAiAEBEhcKCm93bmVyX2tpbmQYAyABKAlIAYgBAUILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmQiPAoWU2V0UmVjb3JkT3duZXJSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKpAgodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARISCgVhZnRlchgEIAEoCUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBEhIKBWZpcnN0GAYgASgFSAWIAQESEQoEbGFzdBgHIAEoBUgGiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUijQIKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARISCgVhZnRlchgGIAEoCUgCiAEBEhMKBmJlZm9yZRgHIAEoCUgDiAEBEhIKBWZpcnN0GAggASgFSASIAQESEQoEbGFzdBgJIAEoBUgFiAEBEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAMQBEoECAQQBVIFbGltaXRSBm9mZnNldCKcAQoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIt8BChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCBISCgp1bnJlc29sdmVkGAcgASgIQg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEoECAYQB1IKdmlld2VyX2tleSJKChtCYXRjaFJlc29sdmVSZWNvcmRzUmVzcG9uc2USKwoHcmVjb3JkcxgBIAMoCzIaLnJlY29yZHMudjEuUmVzb2x2ZWRSZWNvcmQixwEKFVJlc29sdmVDb250ZW50UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYAyABKAlIAIgBARItCgdjb250ZXh0GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEg8KB3ByZXZpZXcYBSABKAhCDgoMX2N1c3RvbWVyX2lkQgoKCF9jb250ZXh0Ij8KFlJlc29sdmVDb250ZW50UmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiswUKDlJlc29sdmVkUmVjb3JkEhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIlCgRkYXRhGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIpCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFwoKdmFyaWFudF9pZBgGIAEoCUgBiAEBEhEKCWhhc19kcmFmdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCghvd25lcl9pZBgLIAEoCUgCiAEBEhcKCm93bmVyX2tpbmQYDCABKAlIA4gBARIYCgt2YXJpYW50X2tleRgNIAEoCUgEiAEBEjoKCHNlZ21lbnRzGA4gAygLMigucmVjb3Jkcy52MS5SZXNvbHZlZFJlY29yZC5TZWdtZW50c0VudHJ5EisKC3Jlc29sdmVkX2J5GA8gASgOMhYucmVjb3Jkcy52MS5SZXNvbHZlZEJ5EjkKDmZpZWxkX3ZhcmlhbnRzGBAgAygLMiEucmVjb3Jkcy52MS5GaWVsZFZhcmlhbnRTZWxlY3Rpb24aLwoNU2VnbWVudHNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAg6AjgBQg4KDF9uYXR1cmFsX2tleUINCgtfdmFyaWFudF9pZEILCglfb3duZXJfaWRCDQoLX293bmVyX2tpbmRCDgoMX3ZhcmlhbnRfa2V5SgQIBxAIUhNleHBlcmltZW50X2V4cG9zdXJlIkAKFUZpZWxkVmFyaWFudFNlbGVjdGlvbhISCgpmaWVsZF9wYXRoGAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSLWAQoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQESFwoPY3Jvc3Nfd29ya3NwYWNlGAcgASgIQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC1IFbGltaXQiuAEKEFNlYXJjaFJlc3VsdEl0ZW0SCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDQoFc2NvcmUYBSABKAESEQoJdGVuYW50X2lkGAYgASgJEhIKCnByb2plY3RfaWQYByABKAlCDgoMX25hdHVyYWxfa2V5IqABChRHbG9iYWxTZWFyY2hSZXNwb25zZRItCgdyZWNvcmRzGAEgAygLMhwucmVjb3Jkcy52MS5TZWFyY2hSZXN1bHRJdGVtEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKhAQoORW1iZWRkaW5nU3RhdHMSEQoJbW9kZWxfa2V5GAEgASgJEhUKDXRvdGFsX3JlY29yZHMYAiABKAUSGAoQZW1iZWRkZWRfcmVjb3JkcxgDIAEoBRIXCg9wZW5kaW5nX3JlY29yZHMYBCABKAUSHQoQbGFzdF9lbWJlZGRlZF9hdBgFIAEoCUgAiAEBQhMKEV9sYXN0X2VtYmVkZGVkX2F0IvgBCg9SZWNvcmRFbWJlZGRpbmcSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRISCgpkaW1lbnNpb25zGAMgASgFEhgKC2VtYmVkZGVkX2F0GAQgASgJSACIAQESDgoGbG9jYWxlGAUgASgJEhYKDnJlY29yZF92YXJpYW50GAYgASgJEg0KBWZpZWxkGAcgASgJEhUKDWZpZWxkX3ZhcmlhbnQYCCABKAkSEAoIcHJvdmlkZXIYCSABKAkSEgoKbW9kZWxfbmFtZRgKIAEoCRINCgVlbnRyeRgLIAEoCUIOCgxfZW1iZWRkZWRfYXQimgIKDVNpbWlsYXJSZWNvcmQSCgoCaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEgoKc2ltaWxhcml0eRgFIAEoARIOCgZsb2NhbGUYBiABKAkSFgoOcmVjb3JkX3ZhcmlhbnQYByABKAkSDQoFZmllbGQYCCABKAkSFQoNZmllbGRfdmFyaWFudBgJIAEoCRIYCgtmaWVsZF9zY29yZRgKIAEoAUgBiAEBEg0KBWVudHJ5GAsgASgJQg4KDF9uYXR1cmFsX2tleUIOCgxfZmllbGRfc2NvcmUiQAoYR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0EhYKCW1vZGVsX2tleRgBIAEoCUgAiAEBQgwKCl9tb2RlbF9rZXkiRgoZR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRIpCgVzdGF0cxgBIAMoCzIaLnJlY29yZHMudjEuRW1iZWRkaW5nU3RhdHMiLwoaR2V0UmVjb3JkRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIk4KG0dldFJlY29yZEVtYmVkZGluZ3NSZXNwb25zZRIvCgplbWJlZGRpbmdzGAEgAygLMhsucmVjb3Jkcy52MS5SZWNvcmRFbWJlZGRpbmcivgIKGUZpbmRTaW1pbGFyUmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQESGAoLY3VzdG9tZXJfaWQYByABKAlIBYgBARItCgdjb250ZXh0GAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Qg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEoECAoQC1IFbGltaXQilAEKGkZpbmRTaW1pbGFyUmVjb3Jkc1Jlc3BvbnNlEioKB3JlY29yZHMYASADKAsyGS5yZWNvcmRzLnYxLlNpbWlsYXJSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIuEBChZXcml0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIOCgZ2ZWN0b3IYAiADKAISEgoKZGltZW5zaW9ucxgDIAEoBRIVCghwcm92aWRlchgEIAEoCUgAiAEBEhcKCm1vZGVsX25hbWUYBSABKAlIAYgBARIQCgNrZXkYBiABKAlIAogBARIZCgxjb250ZW50X2hhc2gYByABKAlIA4gBAUILCglfcHJvdmlkZXJCDQoLX21vZGVsX25hbWVCBgoEX2tleUIPCg1fY29udGVudF9oYXNoIioKF1dyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoXRGVsZXRlRW1iZWRkaW5nc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIisKGERlbGV0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIImcKH0VucXVldWVHZW5lcmF0ZUVtYmVkZGluZ1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRITCgZzb3VyY2UYAyABKAlIAIgBAUIJCgdfc291cmNlIjQKIEVucXVldWVHZW5lcmF0ZUVtYmVkZGluZ1Jlc3BvbnNlEhAKCGVucXVldWVkGAEgASgIIucCChdTZWFyY2hFbWJlZGRpbmdzUmVxdWVzdBIUCgxxdWVyeV92ZWN0b3IYASADKAISFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIXCgpxdWVyeV90ZXh0GAcgASgJSAWIAQESGAoLY3VzdG9tZXJfaWQYCCABKAlIBogBARItCgdjb250ZXh0GAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Qg0KC19xdWVyeV90ZXh0Qg4KDF9jdXN0b21lcl9pZEIKCghfY29udGV4dEoECAoQC1IFbGltaXQikgEKGFNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRIqCgdyZXN1bHRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyKJAQoeUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlUKFk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IrEBCh9SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEjMKB3JlY29yZHMYASADKAsyIi5yZWNvcmRzLnYxLk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIm0KF0VtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0EhIKCnJlY29yZF9pZHMYASADKAkSEAoDa2V5GAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQFCBgoEX2tleUIMCgpfbW9kZWxfa2V5IlAKD0VtYmVkZGluZ0RpZ2VzdBIRCglyZWNvcmRfaWQYASABKAkSGQoMY29udGVudF9oYXNoGAIgASgJSACIAQFCDwoNX2NvbnRlbnRfaGFzaCJIChhFbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USLAoHZGlnZXN0cxgBIAMoCzIbLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0IjUKIEVzdGltYXRlRW1iZWRkaW5nQmFja2ZpbGxSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSKQAQohRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEhQKDHJlY29yZF9jb3VudBgBIAEoBRIYChBlc3RpbWF0ZWRfdG9rZW5zGAIgASgDEhkKEWVzdGltYXRlZF9jcmVkaXRzGAMgASgFEiAKGGFscmVhZHlfZW1iZWRkZWRfcmVjb3JkcxgEIAEoBSIyCh1TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiSAoeU3RhcnRFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEhAKCGVucXVldWVkGAEgASgIEhQKDHJlY29yZF9jb3VudBgCIAEoBSKXAQoMTmVhcmJ5UmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKD2Rpc3RhbmNlX21ldGVycxgFIAEoAUIOCgxfbmF0dXJhbF9rZXkimQIKF1NlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0EgsKA2xhdBgBIAEoARILCgNsbmcYAiABKAESGgoNcmFkaXVzX21ldGVycxgDIAEoAUgAiAEBEhYKCW1vZGVsX2tleRgEIAEoCUgBiAEBEhAKA2tleRgFIAEoCUgCiAEBEhIKBWFmdGVyGAYgASgJSAOIAQESEwoGYmVmb3JlGAcgASgJSASIAQESEgoFZmlyc3QYCCABKAVIBYgBARIRCgRsYXN0GAkgASgFSAaIAQFCEAoOX3JhZGl1c19tZXRlcnNCDAoKX21vZGVsX2tleUIGCgRfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKRAQoYU2VhcmNoQnlMb2NhdGlvblJlc3BvbnNlEikKB3Jlc3VsdHMYASADKAsyGC5yZWNvcmRzLnYxLk5lYXJieVJlY29yZBIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAMgAygJQgwKCl9wYWdlX2luZm8i+gEKGUZpbmROZWFyZXN0UmVjb3Jkc1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhoKDXJhZGl1c19tZXRlcnMYAiABKAFIAIgBARIWCgltb2RlbF9rZXkYAyABKAlIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhMKBmJlZm9yZRgFIAEoCUgDiAEBEhIKBWZpcnN0GAYgASgFSASIAQESEQoEbGFzdBgHIAEoBUgFiAEBQhAKDl9yYWRpdXNfbWV0ZXJzQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpMBChpGaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRIpCgdyZWNvcmRzGAEgAygLMhgucmVjb3Jkcy52MS5OZWFyYnlSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlQKFU1pc3NpbmdHZW9tZXRyeVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSGAoLbmF0dXJhbF9rZXkYAiABKAlIAIgBAUIOCgxfbmF0dXJhbF9rZXkiiAEKHVJlY29yZHNNaXNzaW5nR2VvbWV0cnlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0Iq8BCh5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVzcG9uc2USMgoHcmVjb3JkcxgBIAMoCzIhLnJlY29yZHMudjEuTWlzc2luZ0dlb21ldHJ5UmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAkSDQoFdG90YWwYBCABKAVCDAoKX3BhZ2VfaW5mbyIyCh1CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiOQoeQmFja2ZpbGxSZWNvcmRHZW9tZXRyeVJlc3BvbnNlEhcKD3JlY29yZHNfaW5kZXhlZBgBIAEoBSKfAgoTTG9va3VwUmVjb3JkUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESGAoLY3VzdG9tZXJfaWQYByABKAlIAogBARI2ChBjdXN0b21lcl9jb250ZXh0GAggASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCDgoMX2N1c3RvbWVyX2lkQhMKEV9jdXN0b21lcl9jb250ZXh0IjwKFExvb2t1cFJlY29yZFJlc3BvbnNlEhYKCXJlY29yZF9pZBgBIAEoCUgAiAEBQgwKCl9yZWNvcmRfaWQi6QEKHkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSEAoIa2V5X2hhc2gYAyABKAwSDwoHY2hhbm5lbBgEIAEoCRIXCgp2YXJpYW50X2lkGAUgASgJSACIAQESEwoGbG9jYWxlGAYgASgJSAGIAQESHgoRZXhjbHVkZV9yZWNvcmRfaWQYByABKAlIAogBAUINCgtfdmFyaWFudF9pZEIJCgdfbG9jYWxlQhQKEl9leGNsdWRlX3JlY29yZF9pZCI0Ch9DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlc3BvbnNlEhEKCWF2YWlsYWJsZRgBIAEoCCKXAQoUTG9va3VwQ29uZmxpY3REZXRhaWwSEQoJbW9kZWxfa2V5GAEgASgJEhMKC2xvb2t1cF9uYW1lGAIgASgJEg8KB2NoYW5uZWwYAyABKAkSFwoKdmFyaWFudF9pZBgEIAEoCUgAiAEBEhMKBmxvY2FsZRgFIAEoCUgBiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGUi4gEKGkxpc3RMb29rdXBDb25mbGljdHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIYCgtsb29rdXBfbmFtZRgCIAEoCUgAiAEBEg8KB2NoYW5uZWwYAyABKAkSEgoFZmlyc3QYBCABKAVIAYgBARISCgVhZnRlchgFIAEoCUgCiAEBEhEKBGxhc3QYBiABKAVIA4gBARITCgZiZWZvcmUYByABKAlIBIgBAUIOCgxfbG9va3VwX25hbWVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqMBChtMaXN0TG9va3VwQ29uZmxpY3RzUmVzcG9uc2USKQoGZ3JvdXBzGAEgAygLMhkucmVjb3Jkcy52MS5Db25mbGljdEdyb3VwEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKVAQoNQ29uZmxpY3RHcm91cBITCgtlbmNvZGVkX2tleRgBIAEoCRIPCgdjaGFubmVsGAIgASgJEhcKCnZhcmlhbnRfaWQYAyABKAlIAIgBARIVCghvd25lcl9pZBgEIAEoCUgBiAEBEhIKCnJlY29yZF9pZHMYBSADKAlCDQoLX3ZhcmlhbnRfaWRCCwoJX293bmVyX2lkIi8KGlJlYnVpbGRNb2RlbExvb2t1cHNSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI1ChtSZWJ1aWxkTW9kZWxMb29rdXBzUmVzcG9uc2USFgoOcmVjb3Jkc193YWxrZWQYASABKAUiTgoZUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEQoJaWRfb3Jfa2V5GAIgASgJEgsKA2FsbBgDIAEoCCJ+ChpQdXJnZVJlc3BvbnNlQ2FjaGVSZXNwb25zZRINCgVzY29wZRgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCW1vZGVsX2tleRgDIAEoCRIRCglyZWNvcmRfaWQYBCABKAkSFwoPcmVjb3Jkc19zY2FubmVkGAUgASgFIo0BCiJMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXNSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkSGQoMcmVzb3VyY2Vfa2V5GAIgASgJSACIAQESFgoJcm93X2xpbWl0GAMgASgFSAGIAQFCDwoNX3Jlc291cmNlX2tleUIMCgpfcm93X2xpbWl0IlkKI0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEjIKB2VudHJpZXMYASADKAsyIS5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JFbnRyeSKrAQoVU2xvd1F1ZXJ5QWR2aXNvckVudHJ5EhUKDXJlc291cmNlX3R5cGUYASABKAkSFAoMcmVzb3VyY2Vfa2V5GAIgASgJEhIKCmZpZWxkX3BhdGgYAyABKAkSEAoIb3BlcmF0b3IYBCABKAkSDQoFY291bnQYBSABKAMSMAoMbGFzdF9zZWVuX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCI3Ch5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCSJhCh9TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlc3BvbnNlEj4KCXJlc291cmNlcxgBIAMoCzIrLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclJlc291cmNlU3VtbWFyeSJgCh9TbG93UXVlcnlBZHZpc29yUmVzb3VyY2VTdW1tYXJ5EhQKDHJlc291cmNlX2tleRgBIAEoCRITCgtlbnRyeV9jb3VudBgCIAEoBRISCgp0b3RhbF9oaXRzGAMgASgDIowBCiFDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlcXVlc3QSFQoNcmVzb3VyY2VfdHlwZRgBIAEoCRIZCgxyZXNvdXJjZV9rZXkYAiABKAlIAIgBARISCgpmaWVsZF9wYXRoGAMgASgJEhAKCG9wZXJhdG9yGAQgASgJQg8KDV9yZXNvdXJjZV9rZXkiJAoiQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZSKZAQohUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXF1ZXN0EhIKCmNhdGFsb2dfaWQYASABKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQggKBl9maXJzdCKAAQoZVmFyaWFudENhdGFsb2dVc2FnZVJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESEwoLdXNhZ2VfbGV2ZWwYBCABKAlCDgoMX25hdHVyYWxfa2V5IrcBCiJSZWNvcmRzVXNpbmdWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjYKB3JlY29yZHMYASADKAsyJS5yZWNvcmRzLnYxLlZhcmlhbnRDYXRhbG9nVXNhZ2VSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvInwKG1JlY29yZHNNaXNzaW5nTG9jYWxlUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSDgoGbG9jYWxlGAIgASgJEhIKBWFmdGVyGAMgASgJSACIAQESEgoFZmlyc3QYBCABKAVIAYgBAUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlIKE01pc3NpbmdMb2NhbGVSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IqsBChxSZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEjAKB3JlY29yZHMYASADKAsyHy5yZWNvcmRzLnYxLk1pc3NpbmdMb2NhbGVSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIh4KHFJlY29yZHNMb2NhbGVDb3ZlcmFnZVJlcXVlc3QiNwoOTG9jYWxlQ292ZXJhZ2USDgoGbG9jYWxlGAEgASgJEhUKDW1pc3NpbmdfY291bnQYAiABKAUiYwodUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVzcG9uc2USKwoHbG9jYWxlcxgBIAMoCzIaLnJlY29yZHMudjEuTG9jYWxlQ292ZXJhZ2USFQoNdG90YWxfcmVjb3JkcxgCIAEoBSpzCgpSZWNvcmRUeXBlEhsKF1JFQ09SRF9UWVBFX1VOU1BFQ0lGSUVEEAASFgoSUkVDT1JEX1RZUEVfUkVDT1JEEAESFwoTUkVDT1JEX1RZUEVfVkFSSUFOVBACEhcKE1JFQ09SRF9UWVBFX1ZFUlNJT04QAyqdAQoSQmF0Y2hPcGVyYXRpb25UeXBlEiQKIEJBVENIX09QRVJBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfQ1JFQVRFEAESHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfVVBEQVRFEAISHwobQkFUQ0hfT1BFUkFUSU9OX1RZUEVfREVMRVRFEAMqdgoKUmVzb2x2ZWRCeRIbChdSRVNPTFZFRF9CWV9VTlNQRUNJRklFRBAAEhgKFFJFU09MVkVEX0JZX1RBUkdFVEVEEAESFwoTUkVTT0xWRURfQllfREVGQVVMVBACEhgKFFJFU09MVkVEX0JZX0ZBTExCQUNLEAMyhDEKDlJlY29yZHNTZXJ2aWNlElEKDENyZWF0ZVJlY29yZBIfLnJlY29yZHMudjEuQ3JlYXRlUmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuQ3JlYXRlUmVjb3JkUmVzcG9uc2USSAoJR2V0UmVjb3JkEhwucmVjb3Jkcy52MS5HZXRSZWNvcmRSZXF1ZXN0Gh0ucmVjb3Jkcy52MS5HZXRSZWNvcmRSZXNwb25zZRJXCg5HZXRSZWNvcmRCeUtleRIhLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXF1ZXN0GiIucmVjb3Jkcy52MS5HZXRSZWNvcmRCeUtleVJlc3BvbnNlEmMKEkdldFJlY29yZEJ5S2V5T3JJZBIlLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlPcklkUmVxdWVzdBomLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlPcklkUmVzcG9uc2USTgoLTGlzdFJlY29yZHMSHi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVxdWVzdBofLnJlY29yZHMudjEuTGlzdFJlY29yZHNSZXNwb25zZRJRCgxVcGRhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLlVwZGF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLlVwZGF0ZVJlY29yZFJlc3BvbnNlElcKDkF1dG9TYXZlUmVjb3JkEiEucmVjb3Jkcy52MS5BdXRvU2F2ZVJlY29yZFJlcXVlc3QaIi5yZWNvcmRzLnYxLkF1dG9TYXZlUmVjb3JkUmVzcG9uc2USUQoMVXBzZXJ0UmVjb3JkEh8ucmVjb3Jkcy52MS5VcHNlcnRSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcHNlcnRSZWNvcmRSZXNwb25zZRJRCgxEZWxldGVSZWNvcmQSHy5yZWNvcmRzLnYxLkRlbGV0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkRlbGV0ZVJlY29yZFJlc3BvbnNlElcKDlNldFJlY29yZE93bmVyEiEucmVjb3Jkcy52MS5TZXRSZWNvcmRPd25lclJlcXVlc3QaIi5yZWNvcmRzLnYxLlNldFJlY29yZE93bmVyUmVzcG9uc2USbAoVQmF0Y2hSZWNvcmRPcGVyYXRpb25zEigucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXF1ZXN0GikucmVjb3Jkcy52MS5CYXRjaFJlY29yZE9wZXJhdGlvbnNSZXNwb25zZRJgChFCdWxrVXBkYXRlUmVjb3JkcxIkLnJlY29yZHMudjEuQnVsa1VwZGF0ZVJlY29yZHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1Jlc3BvbnNlEm8KFkJhY2tmaWxsUXVlcnlhYmxlSW5kZXgSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFF1ZXJ5YWJsZUluZGV4UmVzcG9uc2USaQoUQmFja2ZpbGxNb2RlbEluZGV4ZXMSJy5yZWNvcmRzLnYxLkJhY2tmaWxsTW9kZWxJbmRleGVzUmVxdWVzdBooLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRJ+ChtMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXMSLi5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1JlcXVlc3QaLy5yZWNvcmRzLnYxLkxpc3RTbG93UXVlcnlBZHZpc29yRW50cmllc1Jlc3BvbnNlEnIKF1Nsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5EioucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yU3VtbWFyeVJlcXVlc3QaKy5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVzcG9uc2USewoaQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnkSLS5yZWNvcmRzLnYxLkNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVxdWVzdBouLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXNwb25zZRJaCg9EdXBsaWNhdGVSZWNvcmQSIi5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEmkKFER1cGxpY2F0ZVJlY29yZHNCdWxrEicucmVjb3Jkcy52MS5EdXBsaWNhdGVSZWNvcmRzQnVsa1JlcXVlc3QaKC5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVzcG9uc2USVwoOUHVibGlzaFZlcnNpb24SIS5yZWNvcmRzLnYxLlB1Ymxpc2hWZXJzaW9uUmVxdWVzdBoiLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXNwb25zZRJaCg9VbnB1Ymxpc2hSZWNvcmQSIi5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlcXVlc3QaIy5yZWNvcmRzLnYxLlVucHVibGlzaFJlY29yZFJlc3BvbnNlEloKD1JldmVydFRvVmVyc2lvbhIiLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBojLnJlY29yZHMudjEuUmV2ZXJ0VG9WZXJzaW9uUmVzcG9uc2USYwoSTGlzdFJlY29yZFZlcnNpb25zEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmVyc2lvbnNSZXNwb25zZRJUCg1DcmVhdGVWYXJpYW50EiAucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuQ3JlYXRlVmFyaWFudFJlc3BvbnNlEnIKF0NhcHR1cmVEZWZhdWx0QXNWYXJpYW50EioucmVjb3Jkcy52MS5DYXB0dXJlRGVmYXVsdEFzVmFyaWFudFJlcXVlc3QaKy5yZWNvcmRzLnYxLkNhcHR1cmVEZWZhdWx0QXNWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJXCg5SZXNvbHZlQ29udGVudBIhLnJlY29yZHMudjEuUmVzb2x2ZUNvbnRlbnRSZXF1ZXN0GiIucmVjb3Jkcy52MS5SZXNvbHZlQ29udGVudFJlc3BvbnNlEmMKEkxvb2t1cFJlY29yZE1vZGVscxIlLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVxdWVzdBomLnJlY29yZHMudjEuTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USUQoMR2xvYmFsU2VhcmNoEh8ucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXF1ZXN0GiAucmVjb3Jkcy52MS5HbG9iYWxTZWFyY2hSZXNwb25zZRJRCgxMb29rdXBSZWNvcmQSHy5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZFJlc3BvbnNlEnIKF0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5EioucmVjb3Jkcy52MS5DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlcXVlc3QaKy5yZWNvcmRzLnYxLkNoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USZgoTTGlzdExvb2t1cENvbmZsaWN0cxImLnJlY29yZHMudjEuTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QaJy5yZWNvcmRzLnYxLkxpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRJmChNSZWJ1aWxkTW9kZWxMb29rdXBzEiYucmVjb3Jkcy52MS5SZWJ1aWxkTW9kZWxMb29rdXBzUmVxdWVzdBonLnJlY29yZHMudjEuUmVidWlsZE1vZGVsTG9va3Vwc1Jlc3BvbnNlEmMKElB1cmdlUmVzcG9uc2VDYWNoZRIlLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVxdWVzdBomLnJlY29yZHMudjEuUHVyZ2VSZXNwb25zZUNhY2hlUmVzcG9uc2USYAoRR2V0RW1iZWRkaW5nU3RhdHMSJC5yZWNvcmRzLnYxLkdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBolLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXNwb25zZRJmChNHZXRSZWNvcmRFbWJlZGRpbmdzEiYucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVxdWVzdBonLnJlY29yZHMudjEuR2V0UmVjb3JkRW1iZWRkaW5nc1Jlc3BvbnNlEmMKEkZpbmRTaW1pbGFyUmVjb3JkcxIlLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVxdWVzdBomLnJlY29yZHMudjEuRmluZFNpbWlsYXJSZWNvcmRzUmVzcG9uc2USWgoPV3JpdGVFbWJlZGRpbmdzEiIucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXF1ZXN0GiMucmVjb3Jkcy52MS5Xcml0ZUVtYmVkZGluZ3NSZXNwb25zZRJdChBEZWxldGVFbWJlZGRpbmdzEiMucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVxdWVzdBokLnJlY29yZHMudjEuRGVsZXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEFNlYXJjaEVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hFbWJlZGRpbmdzUmVzcG9uc2UScgoXUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmcSKi5yZWNvcmRzLnYxLlJlY29yZHNNaXNzaW5nRW1iZWRkaW5nUmVxdWVzdBorLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXNwb25zZRJdChBFbWJlZGRpbmdEaWdlc3RzEiMucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVxdWVzdBokLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0c1Jlc3BvbnNlEnUKGEVucXVldWVHZW5lcmF0ZUVtYmVkZGluZxIrLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVxdWVzdBosLnJlY29yZHMudjEuRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nUmVzcG9uc2USeAoZRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbBIsLnJlY29yZHMudjEuRXN0aW1hdGVFbWJlZGRpbmdCYWNrZmlsbFJlcXVlc3QaLS5yZWNvcmRzLnYxLkVzdGltYXRlRW1iZWRkaW5nQmFja2ZpbGxSZXNwb25zZRJvChZTdGFydEVtYmVkZGluZ0JhY2tmaWxsEikucmVjb3Jkcy52MS5TdGFydEVtYmVkZGluZ0JhY2tmaWxsUmVxdWVzdBoqLnJlY29yZHMudjEuU3RhcnRFbWJlZGRpbmdCYWNrZmlsbFJlc3BvbnNlEl0KEFNlYXJjaEJ5TG9jYXRpb24SIy5yZWNvcmRzLnYxLlNlYXJjaEJ5TG9jYXRpb25SZXF1ZXN0GiQucmVjb3Jkcy52MS5TZWFyY2hCeUxvY2F0aW9uUmVzcG9uc2USYwoSRmluZE5lYXJlc3RSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kTmVhcmVzdFJlY29yZHNSZXNwb25zZRJvChZSZWNvcmRzTWlzc2luZ0dlb21ldHJ5EikucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0dlb21ldHJ5UmVxdWVzdBoqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdHZW9tZXRyeVJlc3BvbnNlEm8KFkJhY2tmaWxsUmVjb3JkR2VvbWV0cnkSKS5yZWNvcmRzLnYxLkJhY2tmaWxsUmVjb3JkR2VvbWV0cnlSZXF1ZXN0GioucmVjb3Jkcy52MS5CYWNrZmlsbFJlY29yZEdlb21ldHJ5UmVzcG9uc2USewoaUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2cSLS5yZWNvcmRzLnYxLlJlY29yZHNVc2luZ1ZhcmlhbnRDYXRhbG9nUmVxdWVzdBouLnJlY29yZHMudjEuUmVjb3Jkc1VzaW5nVmFyaWFudENhdGFsb2dSZXNwb25zZRJpChRSZWNvcmRzTWlzc2luZ0xvY2FsZRInLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdMb2NhbGVSZXF1ZXN0GigucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0xvY2FsZVJlc3BvbnNlEmwKFVJlY29yZHNMb2NhbGVDb3ZlcmFnZRIoLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVxdWVzdBopLnJlY29yZHMudjEuUmVjb3Jkc0xvY2FsZUNvdmVyYWdlUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3JlY29yZHMvdjE7cmVjb3Jkc3YxYgZwcm90bzM", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
903
922
  var RecordSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 0);
904
923
  var SortFieldSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 2);
905
924
  var BatchOperationSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 3);
@@ -941,61 +960,64 @@ var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_
941
960
  var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 90);
942
961
  var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 92);
943
962
  var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 96);
944
- var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 105);
945
- var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 107);
946
- var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 110);
947
- var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 112);
948
- var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 116);
949
- var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 119);
950
- var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 122);
951
- var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 124);
952
- var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 126);
953
- var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 132);
954
- var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 134);
955
- var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 137);
963
+ var SearchByLocationRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 109);
964
+ var FindNearestRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 111);
965
+ var RecordsMissingGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 114);
966
+ var BackfillRecordGeometryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 116);
967
+ var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 120);
968
+ var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 123);
969
+ var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 126);
970
+ var PurgeResponseCacheRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 128);
971
+ var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 130);
972
+ var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 136);
973
+ var RecordsUsingVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 138);
974
+ var RecordsMissingLocaleRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 141);
975
+ var RecordsLocaleCoverageRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 144);
956
976
  var RecordsService = /* @__PURE__ */ serviceDesc3(file_records_v1_records, 0);
957
977
 
958
978
  // ../../packages/proto-ts/src/billing/v1/billing_pb.js
959
979
  import { enumDesc as enumDesc5, fileDesc as fileDesc8, messageDesc as messageDesc8, serviceDesc as serviceDesc4, tsEnum as tsEnum5 } from "@bufbuild/protobuf/codegenv2";
960
980
  import { file_google_protobuf_struct as file_google_protobuf_struct4, file_google_protobuf_timestamp as file_google_protobuf_timestamp5 } from "@bufbuild/protobuf/wkt";
961
- var file_billing_v1_billing = /* @__PURE__ */ fileDesc8("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SCmJpbGxpbmcudjEiVwoJUGxhbkxpbWl0Eg4KBm1ldHJpYxgBIAEoCRIQCghpbmNsdWRlZBgCIAEoAxILCgNtYXgYAyABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgEIAEoBSJKCg9QbGFuRW50aXRsZW1lbnQSEwoLZmVhdHVyZV9rZXkYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki4gQKC0JpbGxpbmdQbGFuEgoKAmlkGAEgASgJEgwKBHNsdWcYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAUgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBiABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpzb3J0X29yZGVyGAkgASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIu0FCgxTdWJzY3JpcHRpb24SCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhEKCXBsYW5fc2x1ZxgDIAEoCRIeChFjdXN0b21fcGFja2FnZV9pZBgEIAEoCUgAiAEBEiMKFnN0cmlwZV9zdWJzY3JpcHRpb25faWQYBSABKAlIAYgBARIaChJzdHJpcGVfY3VzdG9tZXJfaWQYBiABKAkSLgoGc3RhdHVzGBQgASgOMh4uYmlsbGluZy52MS5TdWJzY3JpcHRpb25TdGF0dXMSPQoUY3VycmVudF9wZXJpb2Rfc3RhcnQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSY3VycmVudF9wZXJpb2RfZW5kGB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjQKC3RyaWFsX3N0YXJ0GCMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEjIKCXRyaWFsX2VuZBgkIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARI0CgtjYW5jZWxlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdwbGFuX2lkGDwgASgJQhQKEl9jdXN0b21fcGFja2FnZV9pZEIZChdfc3RyaXBlX3N1YnNjcmlwdGlvbl9pZEIXChVfY3VycmVudF9wZXJpb2Rfc3RhcnRCFQoTX2N1cnJlbnRfcGVyaW9kX2VuZEIOCgxfdHJpYWxfc3RhcnRCDAoKX3RyaWFsX2VuZEIOCgxfY2FuY2VsZWRfYXQiigQKDUN1c3RvbVBhY2thZ2USCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIMCgRuYW1lGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgGIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYByABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAggASgJSASIAQESGwoOYmFzZV9wbGFuX3NsdWcYCSABKAlIBYgBARIRCglpc19hY3RpdmUYCiABKAgSLgoGbGltaXRzGBQgAygLMh4uYmlsbGluZy52MS5DdXN0b21QYWNrYWdlTGltaXQSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX3Byb2plY3RfaWRCDgoMX2Rlc2NyaXB0aW9uQhMKEV9iYXNlX3ByaWNlX2NlbnRzQhMKEV9iaWxsaW5nX2ludGVydmFsQgsKCV9jdXJyZW5jeUIRCg9fYmFzZV9wbGFuX3NsdWci4AEKEkN1c3RvbVBhY2thZ2VMaW1pdBIKCgJpZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJEg4KBm1ldHJpYxgDIAEoCRIeChFpbmNsdWRlZF9xdWFudGl0eRgEIAEoA0gAiAEBEhkKDG1heF9xdWFudGl0eRgFIAEoA0gBiAEBEiAKE292ZXJhZ2VfcHJpY2VfY2VudHMYBiABKAVIAogBAUIUChJfaW5jbHVkZWRfcXVhbnRpdHlCDwoNX21heF9xdWFudGl0eUIWChRfb3ZlcmFnZV9wcmljZV9jZW50cyK0BAoMVXNhZ2VTdW1tYXJ5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIXCgpwcm9qZWN0X2lkGAMgASgJSACIAQESMAoMcGVyaW9kX3N0YXJ0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpwZXJpb2RfZW5kGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1yZWNvcmRzX2NvdW50GAYgASgDEhsKE21lZGlhX3N0b3JhZ2VfYnl0ZXMYByABKAMSHQoVbWVkaWFfdHJhbnNmb3JtYXRpb25zGAggASgDEhQKDGFjdGl2ZV91c2VycxgJIAEoBRIWCg5wcm9qZWN0c19jb3VudBgKIAEoBRINCgVzZWF0cxgLIAEoBRIaChJlbWFpbHNfdGhpc19wZXJpb2QYDCABKAUSFwoPYWlfY3JlZGl0c191c2VkGA0gASgDEhsKE2FpX2NyZWRpdHNfaW5jbHVkZWQYDiABKAMSHAoUYWlfY3JlZGl0c19yZW1haW5pbmcYDyABKAMSGgoSYWlfY3JlZGl0c19ncmFudGVkGBAgASgDEisKCG92ZXJhZ2VzGBEgAygLMhkuYmlsbGluZy52MS5NZXRyaWNPdmVyYWdlEh0KFWFjY3J1ZWRfb3ZlcmFnZV9jZW50cxgSIAEoAxITCgttY3BfYWN0aW9ucxgTIAEoA0INCgtfcHJvamVjdF9pZCKYAQoNTWV0cmljT3ZlcmFnZRIOCgZtZXRyaWMYASABKAkSEAoIaW5jbHVkZWQYAiABKAMSCwoDbWF4GAMgASgDEg0KBXVzYWdlGAQgASgDEhUKDW92ZXJhZ2VfdW5pdHMYBSABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgGIAEoBRIVCg1hY2NydWVkX2NlbnRzGAcgASgDIooCCgpVc2FnZUFsZXJ0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIOCgZtZXRyaWMYAyABKAkSEQoJdGhyZXNob2xkGAQgASgFEhUKDWN1cnJlbnRfdXNhZ2UYBSABKAMSEwoLbGltaXRfdmFsdWUYBiABKAMSFAoMcGVyY2VudF91c2VkGAcgASgFEjAKDHBlcmlvZF9zdGFydBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMZGlzbWlzc2VkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV9kaXNtaXNzZWRfYXQi7gEKF0xpc3RCaWxsaW5nUGxhbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEgoFYWZ0ZXIYBCABKAlIA4gBARIRCgRsYXN0GAUgASgFSASIAQESEwoGYmVmb3JlGAYgASgJSAWIAQFCCAoGX3doZXJlQgwKCl90ZW5hbnRfaWRCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIp0BChhMaXN0QmlsbGluZ1BsYW5zUmVzcG9uc2USJgoFcGxhbnMYASADKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIlChVHZXRCaWxsaW5nUGxhblJlcXVlc3QSDAoEc2x1ZxgBIAEoCSI/ChZHZXRCaWxsaW5nUGxhblJlc3BvbnNlEiUKBHBsYW4YASABKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuIhsKGUdldERlZmF1bHRGcmVlUGxhblJlcXVlc3QiQwoaR2V0RGVmYXVsdEZyZWVQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4igwQKGENyZWF0ZUJpbGxpbmdQbGFuUmVxdWVzdBIMCgRzbHVnGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtwcmljZV9jZW50cxgEIAEoBRI1ChBiaWxsaW5nX2ludGVydmFsGAUgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWwSFQoIY3VycmVuY3kYBiABKAlIAYgBARIRCglpc19hY3RpdmUYByABKAgSEgoKc29ydF9vcmRlchgIIAEoBRIlCgZsaW1pdHMYFCADKAsyFS5iaWxsaW5nLnYxLlBsYW5MaW1pdBIxCgxlbnRpdGxlbWVudHMYFyADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudBIeChFzdHJpcGVfcHJvZHVjdF9pZBgeIAEoCUgCiAEBEhwKD3N0cmlwZV9wcmljZV9pZBgfIAEoCUgDiAEBEhYKCXRlbmFudF9pZBgoIAEoCUgEiAEBQg4KDF9kZXNjcmlwdGlvbkILCglfY3VycmVuY3lCFAoSX3N0cmlwZV9wcm9kdWN0X2lkQhIKEF9zdHJpcGVfcHJpY2VfaWRCDAoKX3RlbmFudF9pZEoECBUQFkoECBYQF1IIZmVhdHVyZXNSDGNhcGFiaWxpdGllcyJCChlDcmVhdGVCaWxsaW5nUGxhblJlc3BvbnNlEiUKBHBsYW4YASABKAsyFy5iaWxsaW5nLnYxLkJpbGxpbmdQbGFuItsEChhVcGRhdGVCaWxsaW5nUGxhblJlcXVlc3QSCgoCaWQYASABKAkSEQoEc2x1ZxgCIAEoCUgAiAEBEhEKBG5hbWUYAyABKAlIAYgBARIYCgtkZXNjcmlwdGlvbhgEIAEoCUgCiAEBEhgKC3ByaWNlX2NlbnRzGAUgASgFSAOIAQESOgoQYmlsbGluZ19pbnRlcnZhbBgGIAEoDjIbLmJpbGxpbmcudjEuQmlsbGluZ0ludGVydmFsSASIAQESFQoIY3VycmVuY3kYByABKAlIBYgBARIWCglpc19hY3RpdmUYCCABKAhIBogBARIXCgpzb3J0X29yZGVyGAkgASgFSAeIAQESJQoGbGltaXRzGBQgAygLMhUuYmlsbGluZy52MS5QbGFuTGltaXQSMQoMZW50aXRsZW1lbnRzGBcgAygLMhsuYmlsbGluZy52MS5QbGFuRW50aXRsZW1lbnQSHgoRc3RyaXBlX3Byb2R1Y3RfaWQYHiABKAlICIgBARIcCg9zdHJpcGVfcHJpY2VfaWQYHyABKAlICYgBAUIHCgVfc2x1Z0IHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CDgoMX3ByaWNlX2NlbnRzQhMKEV9iaWxsaW5nX2ludGVydmFsQgsKCV9jdXJyZW5jeUIMCgpfaXNfYWN0aXZlQg0KC19zb3J0X29yZGVyQhQKEl9zdHJpcGVfcHJvZHVjdF9pZEISChBfc3RyaXBlX3ByaWNlX2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIkIKGVVwZGF0ZUJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4iPgoWR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkkKF0dldFN1YnNjcmlwdGlvblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIloKHENyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QSEQoJcGxhbl9zbHVnGAEgASgJEhMKC3N1Y2Nlc3NfdXJsGAIgASgJEhIKCmNhbmNlbF91cmwYAyABKAkiNAodQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USEwoLc2Vzc2lvbl91cmwYASABKAkiNwohQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXF1ZXN0EhIKCnJldHVybl91cmwYASABKAkiOQoiQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXNwb25zZRITCgtzZXNzaW9uX3VybBgBIAEoCSJmChZHZXRVc2FnZVN1bW1hcnlSZXF1ZXN0EhcKCnByb2plY3RfaWQYASABKAlIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBAUINCgtfcHJvamVjdF9pZEIMCgpfdGVuYW50X2lkIkIKF0dldFVzYWdlU3VtbWFyeVJlc3BvbnNlEicKBXVzYWdlGAEgASgLMhguYmlsbGluZy52MS5Vc2FnZVN1bW1hcnkiqgEKFkdldFVzYWdlSGlzdG9yeVJlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESLQoEZnJvbRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIrCgJ0bxgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIMCgpfdGVuYW50X2lkQgcKBV9mcm9tQgUKA190byLaAQoRVXNhZ2VIaXN0b3J5UG9pbnQSLwoLcGVyaW9kX2RhdGUYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDXJlY29yZHNfY291bnQYAiABKAMSGwoTbWVkaWFfc3RvcmFnZV9ieXRlcxgDIAEoAxIdChVtZWRpYV90cmFuc2Zvcm1hdGlvbnMYBCABKAMSFAoMYWN0aXZlX3VzZXJzGAUgASgFEhYKDnByb2plY3RzX2NvdW50GAYgASgFEhMKC21jcF9hY3Rpb25zGAcgASgDIkgKF0dldFVzYWdlSGlzdG9yeVJlc3BvbnNlEi0KBnBvaW50cxgBIAMoCzIdLmJpbGxpbmcudjEuVXNhZ2VIaXN0b3J5UG9pbnQitAMKGENyZWF0ZUN1c3RvbVBhY2thZ2VJbnB1dBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESHQoQYmFzZV9wcmljZV9jZW50cxgDIAEoBUgBiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYBCABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgCiAEBEhUKCGN1cnJlbmN5GAUgASgJSAOIAQESGwoOYmFzZV9wbGFuX3NsdWcYBiABKAlIBIgBARIWCgl0ZW5hbnRfaWQYByABKAlIBYgBARIXCgpwcm9qZWN0X2lkGAggASgJSAaIAQESOQoGbGltaXRzGAkgAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dEIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QhEKD19iYXNlX3BsYW5fc2x1Z0IMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIssBCh1DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dBIOCgZtZXRyaWMYASABKAkSHgoRaW5jbHVkZWRfcXVhbnRpdHkYAiABKANIAIgBARIZCgxtYXhfcXVhbnRpdHkYAyABKANIAYgBARIgChNvdmVyYWdlX3ByaWNlX2NlbnRzGAQgASgFSAKIAQFCFAoSX2luY2x1ZGVkX3F1YW50aXR5Qg8KDV9tYXhfcXVhbnRpdHlCFgoUX292ZXJhZ2VfcHJpY2VfY2VudHMiUQoaQ3JlYXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSMwoFaW5wdXQYASABKAsyJC5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VJbnB1dCJJChtDcmVhdGVDdXN0b21QYWNrYWdlUmVzcG9uc2USKgoHcGFja2FnZRgBIAEoCzIZLmJpbGxpbmcudjEuQ3VzdG9tUGFja2FnZSKaAwoYVXBkYXRlQ3VzdG9tUGFja2FnZUlucHV0EhEKBG5hbWUYASABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgCIAEoCUgBiAEBEh0KEGJhc2VfcHJpY2VfY2VudHMYAyABKAVIAogBARI6ChBiaWxsaW5nX2ludGVydmFsGAQgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIA4gBARIVCghjdXJyZW5jeRgFIAEoCUgEiAEBEhsKDmJhc2VfcGxhbl9zbHVnGAYgASgJSAWIAQESFgoJaXNfYWN0aXZlGAcgASgISAaIAQESOQoGbGltaXRzGAggAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QhEKD19iYXNlX3BsYW5fc2x1Z0IMCgpfaXNfYWN0aXZlIl0KGlVwZGF0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0EgoKAmlkGAEgASgJEjMKBWlucHV0GAIgASgLMiQuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQiSQobVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEioKB3BhY2thZ2UYASABKAsyGS5iaWxsaW5nLnYxLkN1c3RvbVBhY2thZ2UiKAoaRGVsZXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSCgoCaWQYASABKAkiLgobRGVsZXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi8AEKGUxpc3RDdXN0b21QYWNrYWdlc1JlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBARIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUipAEKGkxpc3RDdXN0b21QYWNrYWdlc1Jlc3BvbnNlEisKCHBhY2thZ2VzGAEgAygLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJKChFBc3NpZ25QbGFuUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEQoJcGxhbl9zbHVnGAIgASgJEg8KB3BsYW5faWQYAyABKAkiRAoSQXNzaWduUGxhblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIkMKGkFzc2lnbkN1c3RvbVBhY2thZ2VSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJIk0KG0Fzc2lnbkN1c3RvbVBhY2thZ2VSZXNwb25zZRIuCgxzdWJzY3JpcHRpb24YASABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiLHAQoWTGlzdFVzYWdlQWxlcnRzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBEisKBXdoZXJlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUinAEKF0xpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEiYKBmFsZXJ0cxgBIAMoCzIWLmJpbGxpbmcudjEuVXNhZ2VBbGVydBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJgoYRGlzbWlzc1VzYWdlQWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJIiwKGURpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJSChVDaGVja0FJQ3JlZGl0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCLEAgoWQ2hlY2tBSUNyZWRpdHNSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEhEKCXJlbWFpbmluZxgCIAEoAxINCgVsaW1pdBgDIAEoAxIUCgx3aW5kb3dfc3BlbnQYBCABKAMSFQoNZ3JhbnRfYmFsYW5jZRgFIAEoAxIwCgx3aW5kb3dfc3RhcnQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnVuZW5mb3JjZWQYCCABKAgSLAoHcmVmdXNhbBgJIAEoDjIbLmJpbGxpbmcudjEuQUlDcmVkaXRSZWZ1c2FsEhMKC2RhaWx5X3NwZW50GAogASgDEhEKCWRhaWx5X2NhcBgLIAEoAyL0AgoaUmVjb3JkQUlDcmVkaXRTcGVuZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEg0KBW1vZGVsGAQgASgJEhQKDGlucHV0X3Rva2VucxgFIAEoAxIbChNjYWNoZWRfaW5wdXRfdG9rZW5zGAYgASgDEhUKDW91dHB1dF90b2tlbnMYByABKAMSFAoHdXNlcl9pZBgIIAEoCUgBiAEBEhgKC2VudGl0eV90eXBlGAkgASgJSAKIAQESFgoJZW50aXR5X2lkGAogASgJSAOIAQESKQoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhEKCWNvc3Rfb25seRgMIAEoCEINCgtfcHJvamVjdF9pZEIKCghfdXNlcl9pZEIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZCJUChtSZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USDwoHY3JlZGl0cxgBIAEoAxIRCglyZW1haW5pbmcYAiABKAMSEQoJZHVwbGljYXRlGAMgASgIInUKFlJlY29yZE1DUEFjdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEgwKBHRvb2wYBCABKAlCDQoLX3Byb2plY3RfaWQiLAoXUmVjb3JkTUNQQWN0aW9uUmVzcG9uc2USEQoJZHVwbGljYXRlGAEgASgIIkgKIEdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXF1ZXN0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiSwoSQUlDcmVkaXRTcGVuZFNsaWNlEhMKC2VudGl0eV90eXBlGAEgASgJEg8KB2NyZWRpdHMYAiABKAMSDwoHYWN0aW9ucxgDIAEoAyJOChJBSUNyZWRpdERhaWx5U3BlbmQSJwoDZGF5GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjcmVkaXRzGAIgASgDIucBCiFHZXRBSUNyZWRpdFNwZW5kQnJlYWtkb3duUmVzcG9uc2USMQoJYnlfYWN0aW9uGAEgAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFNwZW5kU2xpY2USLQoFZGFpbHkYAiADKAsyHi5iaWxsaW5nLnYxLkFJQ3JlZGl0RGFpbHlTcGVuZBIwCgx3aW5kb3dfc3RhcnQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjYKH0dldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUiXAoRQUlDcmVkaXRNb2RlbFN0YXQSDQoFbW9kZWwYASABKAkSDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAxIPCgdhY3Rpb25zGAQgASgDIqEBChJBSUNyZWRpdFRlbmFudFN0YXQSEQoJdGVuYW50X2lkGAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJEg8KB2NyZWRpdHMYAyABKAMSFgoOY29nc19taWNyb19nYnAYBCABKAMSDwoHYWN0aW9ucxgFIAEoAxIUCgxwcmV2X2NyZWRpdHMYBiABKAMSEwoLYWlfZGlzYWJsZWQYByABKAgiaQoVQUlDcmVkaXRQbGF0Zm9ybURhaWx5EicKA2RheRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAyJGCiBTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCCI4CiFTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVzcG9uc2USEwoLYWlfZGlzYWJsZWQYASABKAgi1QIKIEdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEhUKDXRvdGFsX2NyZWRpdHMYASABKAMSHAoUdG90YWxfY29nc19taWNyb19nYnAYAiABKAMSFQoNdG90YWxfYWN0aW9ucxgDIAEoAxIWCg5hY3RpdmVfdGVuYW50cxgEIAEoBRIeChZjcmVkaXRfdmFsdWVfbWljcm9fZ2JwGAUgASgDEhcKD2dyYW50ZWRfY3JlZGl0cxgGIAEoAxIvCghieV9tb2RlbBgHIAMoCzIdLmJpbGxpbmcudjEuQUlDcmVkaXRNb2RlbFN0YXQSMQoJYnlfdGVuYW50GAggAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFRlbmFudFN0YXQSMAoFZGFpbHkYCSADKAsyIS5iaWxsaW5nLnYxLkFJQ3JlZGl0UGxhdGZvcm1EYWlseSKvAQogTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudFJlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKIUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmJpbGxpbmcudjEuQUlDcmVkaXRUZW5hbnRTdGF0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJRCgtBSVRvcFVwUGFjaxIKCgJpZBgBIAEoCRIPCgdjcmVkaXRzGAIgASgDEhMKC3ByaWNlX2NlbnRzGAMgASgFEhAKCGN1cnJlbmN5GAQgASgJIhkKF0xpc3RBSVRvcFVwUGFja3NSZXF1ZXN0IkIKGExpc3RBSVRvcFVwUGFja3NSZXNwb25zZRImCgVwYWNrcxgBIAMoCzIXLmJpbGxpbmcudjEuQUlUb3BVcFBhY2siXQohQ3JlYXRlVG9wVXBDaGVja291dFNlc3Npb25SZXF1ZXN0Eg8KB3BhY2tfaWQYASABKAkSEwoLc3VjY2Vzc191cmwYAiABKAkSEgoKY2FuY2VsX3VybBgDIAEoCSI5CiJDcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlc3BvbnNlEhMKC3Nlc3Npb25fdXJsGAEgASgJIqACChhTZWxmU2VydmljZVNpZ251cFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSEwoLdGVuYW50X25hbWUYAyABKAkSFgoJcGxhbl9zbHVnGAQgASgJSACIAQESFwoKZmlyc3RfbmFtZRgFIAEoCUgBiAEBEhYKCWxhc3RfbmFtZRgGIAEoCUgCiAEBEhkKDHByb2plY3RfbmFtZRgHIAEoCUgDiAEBEhsKDmNyZWF0ZV9zZXNzaW9uGAggASgISASIAQFCDAoKX3BsYW5fc2x1Z0INCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg8KDV9wcm9qZWN0X25hbWVCEQoPX2NyZWF0ZV9zZXNzaW9uInUKClNpZ251cFVzZXISCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSFwoKZmlyc3RfbmFtZRgDIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgEIAEoCUgBiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWUiKAoMU2lnbnVwVGVuYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkiKQoNU2lnbnVwUHJvamVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJIscBChlTZWxmU2VydmljZVNpZ251cFJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5iaWxsaW5nLnYxLlNpZ251cFVzZXISKAoGdGVuYW50GAIgASgLMhguYmlsbGluZy52MS5TaWdudXBUZW5hbnQSKgoHcHJvamVjdBgDIAEoCzIZLmJpbGxpbmcudjEuU2lnbnVwUHJvamVjdBIuCgxzdWJzY3JpcHRpb24YBCABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiKMAQoNU3RyaXBlUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDgoGYWN0aXZlGAQgASgIEicKBnByaWNlcxgFIAMoCzIXLmJpbGxpbmcudjEuU3RyaXBlUHJpY2VCDgoMX2Rlc2NyaXB0aW9uInQKC1N0cmlwZVByaWNlEgoKAmlkGAEgASgJEhMKC3VuaXRfYW1vdW50GAIgASgFEhAKCGN1cnJlbmN5GAMgASgJEhUKCGludGVydmFsGAQgASgJSACIAQESDgoGYWN0aXZlGAUgASgIQgsKCV9pbnRlcnZhbCKTAQoZTGlzdFN0cmlwZVByb2R1Y3RzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQoaTGlzdFN0cmlwZVByb2R1Y3RzUmVzcG9uc2USKwoIcHJvZHVjdHMYASADKAsyGS5iaWxsaW5nLnYxLlN0cmlwZVByb2R1Y3QSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInIKEkZlYXR1cmVSb2xsb3V0UnVsZRITCgtmZWF0dXJlX2tleRgBIAEoCRISCgpwZXJjZW50YWdlGAIgASgFEg8KB2NvaG9ydHMYAyADKAkSDgoGcmVhc29uGAQgASgJEhIKCnVwZGF0ZWRfYXQYBSABKAkiaAocU2V0RmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBITCgtmZWF0dXJlX2tleRgBIAEoCRISCgpwZXJjZW50YWdlGAIgASgFEg8KB2NvaG9ydHMYAyADKAkSDgoGcmVhc29uGAQgASgJIk0KHVNldEZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEiwKBHJ1bGUYASABKAsyHi5iaWxsaW5nLnYxLkZlYXR1cmVSb2xsb3V0UnVsZSI2Ch9EZWxldGVGZWF0dXJlUm9sbG91dFJ1bGVSZXF1ZXN0EhMKC2ZlYXR1cmVfa2V5GAEgASgJIiIKIERlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlIiAKHkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVxdWVzdCJQCh9MaXN0RmVhdHVyZVJvbGxvdXRSdWxlc1Jlc3BvbnNlEi0KBXJ1bGVzGAEgAygLMh4uYmlsbGluZy52MS5GZWF0dXJlUm9sbG91dFJ1bGUiTQoXU2V0VGVuYW50Q29ob3J0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEg8KB2NvaG9ydHMYAiADKAkSDgoGcmVhc29uGAMgASgJIisKGFNldFRlbmFudENvaG9ydHNSZXNwb25zZRIPCgdjb2hvcnRzGAEgAygJIiwKF0dldFRlbmFudENvaG9ydHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSIrChhHZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USDwoHY29ob3J0cxgBIAMoCSIZChdMaXN0S25vd25Db2hvcnRzUmVxdWVzdCIrChhMaXN0S25vd25Db2hvcnRzUmVzcG9uc2USDwoHY29ob3J0cxgBIAMoCSJpCgxQcm9qZWN0TGltaXQSEgoKcHJvamVjdF9pZBgBIAEoCRIOCgZtZXRyaWMYAiABKAkSDQoFdmFsdWUYAyABKAMSEgoKY3JlYXRlZF9hdBgEIAEoCRISCgp1cGRhdGVkX2F0GAUgASgJInEKFlNldFByb2plY3RMaW1pdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIOCgZtZXRyaWMYAiABKAkSDQoFdmFsdWUYAyABKAMSFgoJdGVuYW50X2lkGAQgASgJSACIAQFCDAoKX3RlbmFudF9pZCJCChdTZXRQcm9qZWN0TGltaXRSZXNwb25zZRInCgVsaW1pdBgBIAEoCzIYLmJpbGxpbmcudjEuUHJvamVjdExpbWl0ImQKGENsZWFyUHJvamVjdExpbWl0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg4KBm1ldHJpYxgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBAUIMCgpfdGVuYW50X2lkIiwKGUNsZWFyUHJvamVjdExpbWl0UmVzcG9uc2USDwoHY2xlYXJlZBgBIAEoCCJoChhMaXN0UHJvamVjdExpbWl0c1JlcXVlc3QSFwoKcHJvamVjdF9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBQg0KC19wcm9qZWN0X2lkQgwKCl90ZW5hbnRfaWQiXwoZTGlzdFByb2plY3RMaW1pdHNSZXNwb25zZRIoCgZsaW1pdHMYASADKAsyGC5iaWxsaW5nLnYxLlByb2plY3RMaW1pdBIYChBjYXBwYWJsZV9tZXRyaWNzGAIgAygJKuMBChJTdWJzY3JpcHRpb25TdGF0dXMSIwofU1VCU0NSSVBUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEh4KGlNVQlNDUklQVElPTl9TVEFUVVNfQUNUSVZFEAESIAocU1VCU0NSSVBUSU9OX1NUQVRVU19QQVNUX0RVRRACEiAKHFNVQlNDUklQVElPTl9TVEFUVVNfQ0FOQ0VMRUQQAxIgChxTVUJTQ1JJUFRJT05fU1RBVFVTX1RSSUFMSU5HEAQSIgoeU1VCU0NSSVBUSU9OX1NUQVRVU19JTkNPTVBMRVRFEAUqagoPQmlsbGluZ0ludGVydmFsEiAKHEJJTExJTkdfSU5URVJWQUxfVU5TUEVDSUZJRUQQABIaChZCSUxMSU5HX0lOVEVSVkFMX01PTlRIEAESGQoVQklMTElOR19JTlRFUlZBTF9ZRUFSEAIqmwEKD0FJQ3JlZGl0UmVmdXNhbBIhCh1BSV9DUkVESVRfUkVGVVNBTF9VTlNQRUNJRklFRBAAEiQKIEFJX0NSRURJVF9SRUZVU0FMX09VVF9PRl9DUkVESVRTEAESHwobQUlfQ1JFRElUX1JFRlVTQUxfREFJTFlfQ0FQEAISHgoaQUlfQ1JFRElUX1JFRlVTQUxfRElTQUJMRUQQAzK7HgoOQmlsbGluZ1NlcnZpY2USXQoQTGlzdEJpbGxpbmdQbGFucxIjLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdQbGFuc1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RCaWxsaW5nUGxhbnNSZXNwb25zZRJXCg5HZXRCaWxsaW5nUGxhbhIhLmJpbGxpbmcudjEuR2V0QmlsbGluZ1BsYW5SZXF1ZXN0GiIuYmlsbGluZy52MS5HZXRCaWxsaW5nUGxhblJlc3BvbnNlEmMKEkdldERlZmF1bHRGcmVlUGxhbhIlLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVxdWVzdBomLmJpbGxpbmcudjEuR2V0RGVmYXVsdEZyZWVQbGFuUmVzcG9uc2USYAoRQ3JlYXRlQmlsbGluZ1BsYW4SJC5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdQbGFuUmVxdWVzdBolLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BsYW5SZXNwb25zZRJgChFVcGRhdGVCaWxsaW5nUGxhbhIkLmJpbGxpbmcudjEuVXBkYXRlQmlsbGluZ1BsYW5SZXF1ZXN0GiUuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nUGxhblJlc3BvbnNlEloKD0dldFN1YnNjcmlwdGlvbhIiLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVxdWVzdBojLmJpbGxpbmcudjEuR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USbAoVQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uEiguYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXF1ZXN0GikuYmlsbGluZy52MS5DcmVhdGVDaGVja291dFNlc3Npb25SZXNwb25zZRJ7ChpDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvbhItLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BvcnRhbFNlc3Npb25SZXF1ZXN0Gi4uYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEloKD0dldFVzYWdlU3VtbWFyeRIiLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVxdWVzdBojLmJpbGxpbmcudjEuR2V0VXNhZ2VTdW1tYXJ5UmVzcG9uc2USWgoPR2V0VXNhZ2VIaXN0b3J5EiIuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXF1ZXN0GiMuYmlsbGluZy52MS5HZXRVc2FnZUhpc3RvcnlSZXNwb25zZRJaCg9MaXN0VXNhZ2VBbGVydHMSIi5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1JlcXVlc3QaIy5iaWxsaW5nLnYxLkxpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEmAKEURpc21pc3NVc2FnZUFsZXJ0EiQuYmlsbGluZy52MS5EaXNtaXNzVXNhZ2VBbGVydFJlcXVlc3QaJS5iaWxsaW5nLnYxLkRpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USZgoTQ3JlYXRlQ3VzdG9tUGFja2FnZRImLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QaJy5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRJmChNVcGRhdGVDdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEmYKE0RlbGV0ZUN1c3RvbVBhY2thZ2USJi5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0GicuYmlsbGluZy52MS5EZWxldGVDdXN0b21QYWNrYWdlUmVzcG9uc2USYwoSTGlzdEN1c3RvbVBhY2thZ2VzEiUuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0Q3VzdG9tUGFja2FnZXNSZXNwb25zZRJmChNBc3NpZ25DdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5Bc3NpZ25DdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuQXNzaWduQ3VzdG9tUGFja2FnZVJlc3BvbnNlEksKCkFzc2lnblBsYW4SHS5iaWxsaW5nLnYxLkFzc2lnblBsYW5SZXF1ZXN0Gh4uYmlsbGluZy52MS5Bc3NpZ25QbGFuUmVzcG9uc2USYwoSTGlzdFN0cmlwZVByb2R1Y3RzEiUuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXF1ZXN0GiYuYmlsbGluZy52MS5MaXN0U3RyaXBlUHJvZHVjdHNSZXNwb25zZRJXCg5DaGVja0FJQ3JlZGl0cxIhLmJpbGxpbmcudjEuQ2hlY2tBSUNyZWRpdHNSZXF1ZXN0GiIuYmlsbGluZy52MS5DaGVja0FJQ3JlZGl0c1Jlc3BvbnNlEmYKE1JlY29yZEFJQ3JlZGl0U3BlbmQSJi5iaWxsaW5nLnYxLlJlY29yZEFJQ3JlZGl0U3BlbmRSZXF1ZXN0GicuYmlsbGluZy52MS5SZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USWgoPUmVjb3JkTUNQQWN0aW9uEiIuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXF1ZXN0GiMuYmlsbGluZy52MS5SZWNvcmRNQ1BBY3Rpb25SZXNwb25zZRJdChBMaXN0QUlUb3BVcFBhY2tzEiMuYmlsbGluZy52MS5MaXN0QUlUb3BVcFBhY2tzUmVxdWVzdBokLmJpbGxpbmcudjEuTGlzdEFJVG9wVXBQYWNrc1Jlc3BvbnNlEnsKGkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uEi0uYmlsbGluZy52MS5DcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlcXVlc3QaLi5iaWxsaW5nLnYxLkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uUmVzcG9uc2USeAoZR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93bhIsLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93blJlcXVlc3QaLS5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXNwb25zZRJ1ChhHZXRBSUNyZWRpdFBsYXRmb3JtU3RhdHMSKy5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QaLC5iaWxsaW5nLnYxLkdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEngKGUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnQSLC5iaWxsaW5nLnYxLkxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXF1ZXN0Gi0uYmlsbGluZy52MS5MaXN0QUlDcmVkaXRTcGVuZEJ5VGVuYW50UmVzcG9uc2USeAoZU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZBIsLmJpbGxpbmcudjEuU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZFJlcXVlc3QaLS5iaWxsaW5nLnYxLlNldFRlbmFudEFJQ3JlZGl0c0VuYWJsZWRSZXNwb25zZRJsChVTZXRGZWF0dXJlUm9sbG91dFJ1bGUSKC5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QaKS5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEnUKGERlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZRIrLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBosLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVzcG9uc2UScgoXTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXMSKi5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVxdWVzdBorLmJpbGxpbmcudjEuTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXNSZXNwb25zZRJdChBTZXRUZW5hbnRDb2hvcnRzEiMuYmlsbGluZy52MS5TZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBokLmJpbGxpbmcudjEuU2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEl0KEEdldFRlbmFudENvaG9ydHMSIy5iaWxsaW5nLnYxLkdldFRlbmFudENvaG9ydHNSZXF1ZXN0GiQuYmlsbGluZy52MS5HZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USXQoQTGlzdEtub3duQ29ob3J0cxIjLmJpbGxpbmcudjEuTGlzdEtub3duQ29ob3J0c1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RLbm93bkNvaG9ydHNSZXNwb25zZRJaCg9TZXRQcm9qZWN0TGltaXQSIi5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlcXVlc3QaIy5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlc3BvbnNlEmAKEUNsZWFyUHJvamVjdExpbWl0EiQuYmlsbGluZy52MS5DbGVhclByb2plY3RMaW1pdFJlcXVlc3QaJS5iaWxsaW5nLnYxLkNsZWFyUHJvamVjdExpbWl0UmVzcG9uc2USYAoRTGlzdFByb2plY3RMaW1pdHMSJC5iaWxsaW5nLnYxLkxpc3RQcm9qZWN0TGltaXRzUmVxdWVzdBolLmJpbGxpbmcudjEuTGlzdFByb2plY3RMaW1pdHNSZXNwb25zZRJgChFTZWxmU2VydmljZVNpZ251cBIkLmJpbGxpbmcudjEuU2VsZlNlcnZpY2VTaWdudXBSZXF1ZXN0GiUuYmlsbGluZy52MS5TZWxmU2VydmljZVNpZ251cFJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9iaWxsaW5nL3YxO2JpbGxpbmd2MWIGcHJvdG8z", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
962
- var ListBillingPlansRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 9);
963
- var GetBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 11);
964
- var GetDefaultFreePlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 13);
965
- var CreateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 15);
966
- var UpdateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 17);
967
- var GetSubscriptionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 19);
968
- var CreateCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 21);
969
- var CreateBillingPortalSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 23);
970
- var GetUsageSummaryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 25);
971
- var GetUsageHistoryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 27);
972
- var CreateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 32);
973
- var UpdateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 35);
974
- var DeleteCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 37);
975
- var ListCustomPackagesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 39);
976
- var AssignPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 41);
977
- var AssignCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 43);
978
- var ListUsageAlertsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 45);
979
- var DismissUsageAlertRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 47);
980
- var CheckAICreditsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 49);
981
- var RecordAICreditSpendRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 51);
982
- var GetAICreditSpendBreakdownRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 55);
983
- var GetAICreditPlatformStatsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 59);
984
- var SetTenantAICreditsEnabledRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 63);
985
- var ListAICreditSpendByTenantRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 66);
986
- var ListAITopUpPacksRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 69);
987
- var CreateTopUpCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 71);
988
- var SelfServiceSignupRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 73);
989
- var ListStripeProductsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 80);
990
- var SetFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 83);
991
- var DeleteFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 85);
992
- var ListFeatureRolloutRulesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 87);
993
- var SetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 89);
994
- var GetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 91);
995
- var ListKnownCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 93);
996
- var SetProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 96);
997
- var ClearProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 98);
998
- var ListProjectLimitsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 100);
981
+ var file_billing_v1_billing = /* @__PURE__ */ fileDesc8("ChhiaWxsaW5nL3YxL2JpbGxpbmcucHJvdG8SCmJpbGxpbmcudjEiVwoJUGxhbkxpbWl0Eg4KBm1ldHJpYxgBIAEoCRIQCghpbmNsdWRlZBgCIAEoAxILCgNtYXgYAyABKAMSGwoTb3ZlcmFnZV9wcmljZV9jZW50cxgEIAEoBSJKCg9QbGFuRW50aXRsZW1lbnQSEwoLZmVhdHVyZV9rZXkYASABKAkSDQoFbGFiZWwYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAki4gQKC0JpbGxpbmdQbGFuEgoKAmlkGAEgASgJEgwKBHNsdWcYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAUgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBiABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgHIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgIIAEoCBISCgpzb3J0X29yZGVyGAkgASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIu0FCgxTdWJzY3JpcHRpb24SCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhEKCXBsYW5fc2x1ZxgDIAEoCRIeChFjdXN0b21fcGFja2FnZV9pZBgEIAEoCUgAiAEBEiMKFnN0cmlwZV9zdWJzY3JpcHRpb25faWQYBSABKAlIAYgBARIaChJzdHJpcGVfY3VzdG9tZXJfaWQYBiABKAkSLgoGc3RhdHVzGBQgASgOMh4uYmlsbGluZy52MS5TdWJzY3JpcHRpb25TdGF0dXMSPQoUY3VycmVudF9wZXJpb2Rfc3RhcnQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESOwoSY3VycmVudF9wZXJpb2RfZW5kGB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgDiAEBEjQKC3RyaWFsX3N0YXJ0GCMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEjIKCXRyaWFsX2VuZBgkIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARI0CgtjYW5jZWxlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdwbGFuX2lkGDwgASgJQhQKEl9jdXN0b21fcGFja2FnZV9pZEIZChdfc3RyaXBlX3N1YnNjcmlwdGlvbl9pZEIXChVfY3VycmVudF9wZXJpb2Rfc3RhcnRCFQoTX2N1cnJlbnRfcGVyaW9kX2VuZEIOCgxfdHJpYWxfc3RhcnRCDAoKX3RyaWFsX2VuZEIOCgxfY2FuY2VsZWRfYXQiowQKDUN1c3RvbVBhY2thZ2USCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIMCgRuYW1lGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgGIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYByABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAggASgJSASIAQESEQoJaXNfYWN0aXZlGAogASgIEi4KBmxpbWl0cxgUIAMoCzIeLmJpbGxpbmcudjEuQ3VzdG9tUGFja2FnZUxpbWl0EjEKDGVudGl0bGVtZW50cxgVIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Ei4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg0KC19wcm9qZWN0X2lkQg4KDF9kZXNjcmlwdGlvbkITChFfYmFzZV9wcmljZV9jZW50c0ITChFfYmlsbGluZ19pbnRlcnZhbEILCglfY3VycmVuY3lKBAgJEApSDmJhc2VfcGxhbl9zbHVnIuABChJDdXN0b21QYWNrYWdlTGltaXQSCgoCaWQYASABKAkSEgoKcGFja2FnZV9pZBgCIAEoCRIOCgZtZXRyaWMYAyABKAkSHgoRaW5jbHVkZWRfcXVhbnRpdHkYBCABKANIAIgBARIZCgxtYXhfcXVhbnRpdHkYBSABKANIAYgBARIgChNvdmVyYWdlX3ByaWNlX2NlbnRzGAYgASgFSAKIAQFCFAoSX2luY2x1ZGVkX3F1YW50aXR5Qg8KDV9tYXhfcXVhbnRpdHlCFgoUX292ZXJhZ2VfcHJpY2VfY2VudHMizwUKDFVzYWdlU3VtbWFyeRIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSFwoKcHJvamVjdF9pZBgDIAEoCUgAiAEBEjAKDHBlcmlvZF9zdGFydBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKcGVyaW9kX2VuZBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcmVjb3Jkc19jb3VudBgGIAEoAxIbChNtZWRpYV9zdG9yYWdlX2J5dGVzGAcgASgDEh0KFW1lZGlhX3RyYW5zZm9ybWF0aW9ucxgIIAEoAxIUCgxhY3RpdmVfdXNlcnMYCSABKAUSFgoOcHJvamVjdHNfY291bnQYCiABKAUSDQoFc2VhdHMYCyABKAUSGgoSZW1haWxzX3RoaXNfcGVyaW9kGAwgASgFEhcKD2FpX2NyZWRpdHNfdXNlZBgNIAEoAxIbChNhaV9jcmVkaXRzX2luY2x1ZGVkGA4gASgDEhwKFGFpX2NyZWRpdHNfcmVtYWluaW5nGA8gASgDEhoKEmFpX2NyZWRpdHNfZ3JhbnRlZBgQIAEoAxIrCghvdmVyYWdlcxgRIAMoCzIZLmJpbGxpbmcudjEuTWV0cmljT3ZlcmFnZRIdChVhY2NydWVkX292ZXJhZ2VfY2VudHMYEiABKAMSEwoLbWNwX2FjdGlvbnMYEyABKAMSEwoLbm90ZXNfY291bnQYFCABKAMSHgoWbm90ZV9hdHRhY2htZW50c19jb3VudBgVIAEoAxIbChNjb250ZW50X3Jlc29sdXRpb25zGBYgASgDEhoKEnJlc29sdXRpb25zX2Zyb3plbhgXIAEoCBIrCgtvdmVyYWdlX2NhcBgYIAEoCzIWLmJpbGxpbmcudjEuT3ZlcmFnZUNhcEINCgtfcHJvamVjdF9pZCLKAQoKT3ZlcmFnZUNhcBIRCgljYXBfY2VudHMYASABKAMSDwoHYXBwbGllcxgCIAEoCBIWCg5uZXh0X3BsYW5fc2x1ZxgDIAEoCRIPCgdyZWFjaGVkGAQgASgIEhQKDGJpbGxlZF9jZW50cxgFIAEoAxIWCg53aXRoaGVsZF9jZW50cxgGIAEoAxIQCgh0b3BfcnVuZxgHIAEoCBIVCg10cmlnZ2VyX2NlbnRzGAggASgDEhgKEGFscmVhZHlfYnJlYWNoZWQYCSABKAgimAEKDU1ldHJpY092ZXJhZ2USDgoGbWV0cmljGAEgASgJEhAKCGluY2x1ZGVkGAIgASgDEgsKA21heBgDIAEoAxINCgV1c2FnZRgEIAEoAxIVCg1vdmVyYWdlX3VuaXRzGAUgASgDEhsKE292ZXJhZ2VfcHJpY2VfY2VudHMYBiABKAUSFQoNYWNjcnVlZF9jZW50cxgHIAEoAyKKAgoKVXNhZ2VBbGVydBIKCgJpZBgBIAEoCRIRCgl0ZW5hbnRfaWQYAiABKAkSDgoGbWV0cmljGAMgASgJEhEKCXRocmVzaG9sZBgEIAEoBRIVCg1jdXJyZW50X3VzYWdlGAUgASgDEhMKC2xpbWl0X3ZhbHVlGAYgASgDEhQKDHBlcmNlbnRfdXNlZBgHIAEoBRIwCgxwZXJpb2Rfc3RhcnQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDGRpc21pc3NlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fZGlzbWlzc2VkX2F0Iu4BChdMaXN0QmlsbGluZ1BsYW5zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIWCgl0ZW5hbnRfaWQYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhIKBWFmdGVyGAQgASgJSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBEhMKBmJlZm9yZRgGIAEoCUgFiAEBQggKBl93aGVyZUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKzAQoYTGlzdEJpbGxpbmdQbGFuc1Jlc3BvbnNlEiYKBXBsYW5zGAEgAygLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJEhQKDHBsYW5fbWV0cmljcxgFIAMoCUIMCgpfcGFnZV9pbmZvIiUKFUdldEJpbGxpbmdQbGFuUmVxdWVzdBIMCgRzbHVnGAEgASgJIj8KFkdldEJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4iGwoZR2V0RGVmYXVsdEZyZWVQbGFuUmVxdWVzdCJDChpHZXREZWZhdWx0RnJlZVBsYW5SZXNwb25zZRIlCgRwbGFuGAEgASgLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbiKDBAoYQ3JlYXRlQmlsbGluZ1BsYW5SZXF1ZXN0EgwKBHNsdWcYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhMKC3ByaWNlX2NlbnRzGAQgASgFEjUKEGJpbGxpbmdfaW50ZXJ2YWwYBSABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbBIVCghjdXJyZW5jeRgGIAEoCUgBiAEBEhEKCWlzX2FjdGl2ZRgHIAEoCBISCgpzb3J0X29yZGVyGAggASgFEiUKBmxpbWl0cxgUIAMoCzIVLmJpbGxpbmcudjEuUGxhbkxpbWl0EjEKDGVudGl0bGVtZW50cxgXIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Eh4KEXN0cmlwZV9wcm9kdWN0X2lkGB4gASgJSAKIAQESHAoPc3RyaXBlX3ByaWNlX2lkGB8gASgJSAOIAQESFgoJdGVuYW50X2lkGCggASgJSASIAQFCDgoMX2Rlc2NyaXB0aW9uQgsKCV9jdXJyZW5jeUIUChJfc3RyaXBlX3Byb2R1Y3RfaWRCEgoQX3N0cmlwZV9wcmljZV9pZEIMCgpfdGVuYW50X2lkSgQIFRAWSgQIFhAXUghmZWF0dXJlc1IMY2FwYWJpbGl0aWVzIkIKGUNyZWF0ZUJpbGxpbmdQbGFuUmVzcG9uc2USJQoEcGxhbhgBIAEoCzIXLmJpbGxpbmcudjEuQmlsbGluZ1BsYW4i2wQKGFVwZGF0ZUJpbGxpbmdQbGFuUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRzbHVnGAIgASgJSACIAQESEQoEbmFtZRgDIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAQgASgJSAKIAQESGAoLcHJpY2VfY2VudHMYBSABKAVIA4gBARI6ChBiaWxsaW5nX2ludGVydmFsGAYgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIBIgBARIVCghjdXJyZW5jeRgHIAEoCUgFiAEBEhYKCWlzX2FjdGl2ZRgIIAEoCEgGiAEBEhcKCnNvcnRfb3JkZXIYCSABKAVIB4gBARIlCgZsaW1pdHMYFCADKAsyFS5iaWxsaW5nLnYxLlBsYW5MaW1pdBIxCgxlbnRpdGxlbWVudHMYFyADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudBIeChFzdHJpcGVfcHJvZHVjdF9pZBgeIAEoCUgIiAEBEhwKD3N0cmlwZV9wcmljZV9pZBgfIAEoCUgJiAEBQgcKBV9zbHVnQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIOCgxfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QgwKCl9pc19hY3RpdmVCDQoLX3NvcnRfb3JkZXJCFAoSX3N0cmlwZV9wcm9kdWN0X2lkQhIKEF9zdHJpcGVfcHJpY2VfaWRKBAgVEBZKBAgWEBdSCGZlYXR1cmVzUgxjYXBhYmlsaXRpZXMiQgoZVXBkYXRlQmlsbGluZ1BsYW5SZXNwb25zZRIlCgRwbGFuGAEgASgLMhcuYmlsbGluZy52MS5CaWxsaW5nUGxhbiI+ChZHZXRTdWJzY3JpcHRpb25SZXF1ZXN0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiSQoXR2V0U3Vic2NyaXB0aW9uUmVzcG9uc2USLgoMc3Vic2NyaXB0aW9uGAEgASgLMhguYmlsbGluZy52MS5TdWJzY3JpcHRpb24iWgocQ3JlYXRlQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBIRCglwbGFuX3NsdWcYASABKAkSEwoLc3VjY2Vzc191cmwYAiABKAkSEgoKY2FuY2VsX3VybBgDIAEoCSI0Ch1DcmVhdGVDaGVja291dFNlc3Npb25SZXNwb25zZRITCgtzZXNzaW9uX3VybBgBIAEoCSI3CiFDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QSEgoKcmV0dXJuX3VybBgBIAEoCSI5CiJDcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlc3BvbnNlEhMKC3Nlc3Npb25fdXJsGAEgASgJImYKFkdldFVzYWdlU3VtbWFyeVJlcXVlc3QSFwoKcHJvamVjdF9pZBgBIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgCIAEoCUgBiAEBQg0KC19wcm9qZWN0X2lkQgwKCl90ZW5hbnRfaWQiQgoXR2V0VXNhZ2VTdW1tYXJ5UmVzcG9uc2USJwoFdXNhZ2UYASABKAsyGC5iaWxsaW5nLnYxLlVzYWdlU3VtbWFyeSKqAQoWR2V0VXNhZ2VIaXN0b3J5UmVxdWVzdBIWCgl0ZW5hbnRfaWQYASABKAlIAIgBARItCgRmcm9tGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEisKAnRvGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQgwKCl90ZW5hbnRfaWRCBwoFX2Zyb21CBQoDX3RvIo8CChFVc2FnZUhpc3RvcnlQb2ludBIvCgtwZXJpb2RfZGF0ZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNcmVjb3Jkc19jb3VudBgCIAEoAxIbChNtZWRpYV9zdG9yYWdlX2J5dGVzGAMgASgDEh0KFW1lZGlhX3RyYW5zZm9ybWF0aW9ucxgEIAEoAxIUCgxhY3RpdmVfdXNlcnMYBSABKAUSFgoOcHJvamVjdHNfY291bnQYBiABKAUSEwoLbWNwX2FjdGlvbnMYByABKAMSEwoLbm90ZXNfY291bnQYCCABKAMSHgoWbm90ZV9hdHRhY2htZW50c19jb3VudBgJIAEoAyJIChdHZXRVc2FnZUhpc3RvcnlSZXNwb25zZRItCgZwb2ludHMYASADKAsyHS5iaWxsaW5nLnYxLlVzYWdlSGlzdG9yeVBvaW50Is0DChhDcmVhdGVDdXN0b21QYWNrYWdlSW5wdXQSDAoEbmFtZRgBIAEoCRIYCgtkZXNjcmlwdGlvbhgCIAEoCUgAiAEBEh0KEGJhc2VfcHJpY2VfY2VudHMYAyABKAVIAYgBARI6ChBiaWxsaW5nX2ludGVydmFsGAQgASgOMhsuYmlsbGluZy52MS5CaWxsaW5nSW50ZXJ2YWxIAogBARIVCghjdXJyZW5jeRgFIAEoCUgDiAEBEhYKCXRlbmFudF9pZBgHIAEoCUgEiAEBEhcKCnByb2plY3RfaWQYCCABKAlIBYgBARI5CgZsaW1pdHMYCSADKAsyKS5iaWxsaW5nLnYxLkNyZWF0ZUN1c3RvbVBhY2thZ2VMaW1pdElucHV0EjEKDGVudGl0bGVtZW50cxgKIAMoCzIbLmJpbGxpbmcudjEuUGxhbkVudGl0bGVtZW50Qg4KDF9kZXNjcmlwdGlvbkITChFfYmFzZV9wcmljZV9jZW50c0ITChFfYmlsbGluZ19pbnRlcnZhbEILCglfY3VycmVuY3lCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEoECAYQB1IOYmFzZV9wbGFuX3NsdWciywEKHUNyZWF0ZUN1c3RvbVBhY2thZ2VMaW1pdElucHV0Eg4KBm1ldHJpYxgBIAEoCRIeChFpbmNsdWRlZF9xdWFudGl0eRgCIAEoA0gAiAEBEhkKDG1heF9xdWFudGl0eRgDIAEoA0gBiAEBEiAKE292ZXJhZ2VfcHJpY2VfY2VudHMYBCABKAVIAogBAUIUChJfaW5jbHVkZWRfcXVhbnRpdHlCDwoNX21heF9xdWFudGl0eUIWChRfb3ZlcmFnZV9wcmljZV9jZW50cyJRChpDcmVhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBIzCgVpbnB1dBgBIAEoCzIkLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZUlucHV0IkkKG0NyZWF0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRIqCgdwYWNrYWdlGAEgASgLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlIrMDChhVcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQSEQoEbmFtZRgBIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAIgASgJSAGIAQESHQoQYmFzZV9wcmljZV9jZW50cxgDIAEoBUgCiAEBEjoKEGJpbGxpbmdfaW50ZXJ2YWwYBCABKA4yGy5iaWxsaW5nLnYxLkJpbGxpbmdJbnRlcnZhbEgDiAEBEhUKCGN1cnJlbmN5GAUgASgJSASIAQESFgoJaXNfYWN0aXZlGAcgASgISAWIAQESOQoGbGltaXRzGAggAygLMikuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlTGltaXRJbnB1dBIxCgxlbnRpdGxlbWVudHMYCSADKAsyGy5iaWxsaW5nLnYxLlBsYW5FbnRpdGxlbWVudEIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX2Jhc2VfcHJpY2VfY2VudHNCEwoRX2JpbGxpbmdfaW50ZXJ2YWxCCwoJX2N1cnJlbmN5QgwKCl9pc19hY3RpdmVKBAgGEAdSDmJhc2VfcGxhbl9zbHVnIl0KGlVwZGF0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0EgoKAmlkGAEgASgJEjMKBWlucHV0GAIgASgLMiQuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlSW5wdXQiSQobVXBkYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEioKB3BhY2thZ2UYASABKAsyGS5iaWxsaW5nLnYxLkN1c3RvbVBhY2thZ2UiKAoaRGVsZXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QSCgoCaWQYASABKAkiLgobRGVsZXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi8AEKGUxpc3RDdXN0b21QYWNrYWdlc1JlcXVlc3QSFgoJdGVuYW50X2lkGAEgASgJSACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBARIrCgV3aGVyZRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIMCgpfdGVuYW50X2lkQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUipAEKGkxpc3RDdXN0b21QYWNrYWdlc1Jlc3BvbnNlEisKCHBhY2thZ2VzGAEgAygLMhkuYmlsbGluZy52MS5DdXN0b21QYWNrYWdlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJKChFBc3NpZ25QbGFuUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEQoJcGxhbl9zbHVnGAIgASgJEg8KB3BsYW5faWQYAyABKAkiRAoSQXNzaWduUGxhblJlc3BvbnNlEi4KDHN1YnNjcmlwdGlvbhgBIAEoCzIYLmJpbGxpbmcudjEuU3Vic2NyaXB0aW9uIkMKGkFzc2lnbkN1c3RvbVBhY2thZ2VSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwYWNrYWdlX2lkGAIgASgJIk0KG0Fzc2lnbkN1c3RvbVBhY2thZ2VSZXNwb25zZRIuCgxzdWJzY3JpcHRpb24YASABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiLHAQoWTGlzdFVzYWdlQWxlcnRzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBEisKBXdoZXJlGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZUIICgZfd2hlcmUinAEKF0xpc3RVc2FnZUFsZXJ0c1Jlc3BvbnNlEiYKBmFsZXJ0cxgBIAMoCzIWLmJpbGxpbmcudjEuVXNhZ2VBbGVydBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJgoYRGlzbWlzc1VzYWdlQWxlcnRSZXF1ZXN0EgoKAmlkGAEgASgJIiwKGURpc21pc3NVc2FnZUFsZXJ0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJSChVDaGVja0FJQ3JlZGl0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBAUINCgtfcHJvamVjdF9pZCLEAgoWQ2hlY2tBSUNyZWRpdHNSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEhEKCXJlbWFpbmluZxgCIAEoAxINCgVsaW1pdBgDIAEoAxIUCgx3aW5kb3dfc3BlbnQYBCABKAMSFQoNZ3JhbnRfYmFsYW5jZRgFIAEoAxIwCgx3aW5kb3dfc3RhcnQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnVuZW5mb3JjZWQYCCABKAgSLAoHcmVmdXNhbBgJIAEoDjIbLmJpbGxpbmcudjEuQUlDcmVkaXRSZWZ1c2FsEhMKC2RhaWx5X3NwZW50GAogASgDEhEKCWRhaWx5X2NhcBgLIAEoAyL0AgoaUmVjb3JkQUlDcmVkaXRTcGVuZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEg0KBW1vZGVsGAQgASgJEhQKDGlucHV0X3Rva2VucxgFIAEoAxIbChNjYWNoZWRfaW5wdXRfdG9rZW5zGAYgASgDEhUKDW91dHB1dF90b2tlbnMYByABKAMSFAoHdXNlcl9pZBgIIAEoCUgBiAEBEhgKC2VudGl0eV90eXBlGAkgASgJSAKIAQESFgoJZW50aXR5X2lkGAogASgJSAOIAQESKQoIbWV0YWRhdGEYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhEKCWNvc3Rfb25seRgMIAEoCEINCgtfcHJvamVjdF9pZEIKCghfdXNlcl9pZEIOCgxfZW50aXR5X3R5cGVCDAoKX2VudGl0eV9pZCJUChtSZWNvcmRBSUNyZWRpdFNwZW5kUmVzcG9uc2USDwoHY3JlZGl0cxgBIAEoAxIRCglyZW1haW5pbmcYAiABKAMSEQoJZHVwbGljYXRlGAMgASgIInUKFlJlY29yZE1DUEFjdGlvblJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhcKCnByb2plY3RfaWQYAiABKAlIAIgBARISCgpzb3VyY2VfcmVmGAMgASgJEgwKBHRvb2wYBCABKAlCDQoLX3Byb2plY3RfaWQiLAoXUmVjb3JkTUNQQWN0aW9uUmVzcG9uc2USEQoJZHVwbGljYXRlGAEgASgIIkgKIEdldEFJQ3JlZGl0U3BlbmRCcmVha2Rvd25SZXF1ZXN0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiSwoSQUlDcmVkaXRTcGVuZFNsaWNlEhMKC2VudGl0eV90eXBlGAEgASgJEg8KB2NyZWRpdHMYAiABKAMSDwoHYWN0aW9ucxgDIAEoAyJOChJBSUNyZWRpdERhaWx5U3BlbmQSJwoDZGF5GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIPCgdjcmVkaXRzGAIgASgDIucBCiFHZXRBSUNyZWRpdFNwZW5kQnJlYWtkb3duUmVzcG9uc2USMQoJYnlfYWN0aW9uGAEgAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFNwZW5kU2xpY2USLQoFZGFpbHkYAiADKAsyHi5iaWxsaW5nLnYxLkFJQ3JlZGl0RGFpbHlTcGVuZBIwCgx3aW5kb3dfc3RhcnQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCndpbmRvd19lbmQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjYKH0dldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1JlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUiXAoRQUlDcmVkaXRNb2RlbFN0YXQSDQoFbW9kZWwYASABKAkSDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAxIPCgdhY3Rpb25zGAQgASgDIqEBChJBSUNyZWRpdFRlbmFudFN0YXQSEQoJdGVuYW50X2lkGAEgASgJEhMKC3RlbmFudF9uYW1lGAIgASgJEg8KB2NyZWRpdHMYAyABKAMSFgoOY29nc19taWNyb19nYnAYBCABKAMSDwoHYWN0aW9ucxgFIAEoAxIUCgxwcmV2X2NyZWRpdHMYBiABKAMSEwoLYWlfZGlzYWJsZWQYByABKAgiaQoVQUlDcmVkaXRQbGF0Zm9ybURhaWx5EicKA2RheRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHY3JlZGl0cxgCIAEoAxIWCg5jb2dzX21pY3JvX2dicBgDIAEoAyJGCiBTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCCI4CiFTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVzcG9uc2USEwoLYWlfZGlzYWJsZWQYASABKAgi1QIKIEdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0c1Jlc3BvbnNlEhUKDXRvdGFsX2NyZWRpdHMYASABKAMSHAoUdG90YWxfY29nc19taWNyb19nYnAYAiABKAMSFQoNdG90YWxfYWN0aW9ucxgDIAEoAxIWCg5hY3RpdmVfdGVuYW50cxgEIAEoBRIeChZjcmVkaXRfdmFsdWVfbWljcm9fZ2JwGAUgASgDEhcKD2dyYW50ZWRfY3JlZGl0cxgGIAEoAxIvCghieV9tb2RlbBgHIAMoCzIdLmJpbGxpbmcudjEuQUlDcmVkaXRNb2RlbFN0YXQSMQoJYnlfdGVuYW50GAggAygLMh4uYmlsbGluZy52MS5BSUNyZWRpdFRlbmFudFN0YXQSMAoFZGFpbHkYCSADKAsyIS5iaWxsaW5nLnYxLkFJQ3JlZGl0UGxhdGZvcm1EYWlseSKvAQogTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudFJlcXVlc3QSEwoLd2luZG93X2RheXMYASABKAUSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKIUxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmJpbGxpbmcudjEuQUlDcmVkaXRUZW5hbnRTdGF0Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJRCgtBSVRvcFVwUGFjaxIKCgJpZBgBIAEoCRIPCgdjcmVkaXRzGAIgASgDEhMKC3ByaWNlX2NlbnRzGAMgASgFEhAKCGN1cnJlbmN5GAQgASgJIhkKF0xpc3RBSVRvcFVwUGFja3NSZXF1ZXN0IkIKGExpc3RBSVRvcFVwUGFja3NSZXNwb25zZRImCgVwYWNrcxgBIAMoCzIXLmJpbGxpbmcudjEuQUlUb3BVcFBhY2siXQohQ3JlYXRlVG9wVXBDaGVja291dFNlc3Npb25SZXF1ZXN0Eg8KB3BhY2tfaWQYASABKAkSEwoLc3VjY2Vzc191cmwYAiABKAkSEgoKY2FuY2VsX3VybBgDIAEoCSI5CiJDcmVhdGVUb3BVcENoZWNrb3V0U2Vzc2lvblJlc3BvbnNlEhMKC3Nlc3Npb25fdXJsGAEgASgJIqACChhTZWxmU2VydmljZVNpZ251cFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSEwoLdGVuYW50X25hbWUYAyABKAkSFgoJcGxhbl9zbHVnGAQgASgJSACIAQESFwoKZmlyc3RfbmFtZRgFIAEoCUgBiAEBEhYKCWxhc3RfbmFtZRgGIAEoCUgCiAEBEhkKDHByb2plY3RfbmFtZRgHIAEoCUgDiAEBEhsKDmNyZWF0ZV9zZXNzaW9uGAggASgISASIAQFCDAoKX3BsYW5fc2x1Z0INCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg8KDV9wcm9qZWN0X25hbWVCEQoPX2NyZWF0ZV9zZXNzaW9uInUKClNpZ251cFVzZXISCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSFwoKZmlyc3RfbmFtZRgDIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgEIAEoCUgBiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWUiKAoMU2lnbnVwVGVuYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkiKQoNU2lnbnVwUHJvamVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJIscBChlTZWxmU2VydmljZVNpZ251cFJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5iaWxsaW5nLnYxLlNpZ251cFVzZXISKAoGdGVuYW50GAIgASgLMhguYmlsbGluZy52MS5TaWdudXBUZW5hbnQSKgoHcHJvamVjdBgDIAEoCzIZLmJpbGxpbmcudjEuU2lnbnVwUHJvamVjdBIuCgxzdWJzY3JpcHRpb24YBCABKAsyGC5iaWxsaW5nLnYxLlN1YnNjcmlwdGlvbiKMAQoNU3RyaXBlUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDgoGYWN0aXZlGAQgASgIEicKBnByaWNlcxgFIAMoCzIXLmJpbGxpbmcudjEuU3RyaXBlUHJpY2VCDgoMX2Rlc2NyaXB0aW9uInQKC1N0cmlwZVByaWNlEgoKAmlkGAEgASgJEhMKC3VuaXRfYW1vdW50GAIgASgFEhAKCGN1cnJlbmN5GAMgASgJEhUKCGludGVydmFsGAQgASgJSACIAQESDgoGYWN0aXZlGAUgASgIQgsKCV9pbnRlcnZhbCKTAQoZTGlzdFN0cmlwZVByb2R1Y3RzUmVxdWVzdBISCgVmaXJzdBgBIAEoBUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEQoEbGFzdBgDIAEoBUgCiAEBEhMKBmJlZm9yZRgEIAEoCUgDiAEBQggKBl9maXJzdEIICgZfYWZ0ZXJCBwoFX2xhc3RCCQoHX2JlZm9yZSKkAQoaTGlzdFN0cmlwZVByb2R1Y3RzUmVzcG9uc2USKwoIcHJvZHVjdHMYASADKAsyGS5iaWxsaW5nLnYxLlN0cmlwZVByb2R1Y3QSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjoKB0ZlYXR1cmUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJIhUKE0xpc3RGZWF0dXJlc1JlcXVlc3QiPQoUTGlzdEZlYXR1cmVzUmVzcG9uc2USJQoIZmVhdHVyZXMYASADKAsyEy5iaWxsaW5nLnYxLkZlYXR1cmUiQwoYQ2hlY2tFbnRpdGxlbWVudHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIUCgxmZWF0dXJlX2tleXMYAiADKAkikwEKGUNoZWNrRW50aXRsZW1lbnRzUmVzcG9uc2USRQoIZW50aXRsZWQYASADKAsyMy5iaWxsaW5nLnYxLkNoZWNrRW50aXRsZW1lbnRzUmVzcG9uc2UuRW50aXRsZWRFbnRyeRovCg1FbnRpdGxlZEVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCDoCOAEicgoSRmVhdHVyZVJvbGxvdXRSdWxlEhMKC2ZlYXR1cmVfa2V5GAEgASgJEhIKCnBlcmNlbnRhZ2UYAiABKAUSDwoHY29ob3J0cxgDIAMoCRIOCgZyZWFzb24YBCABKAkSEgoKdXBkYXRlZF9hdBgFIAEoCSJoChxTZXRGZWF0dXJlUm9sbG91dFJ1bGVSZXF1ZXN0EhMKC2ZlYXR1cmVfa2V5GAEgASgJEhIKCnBlcmNlbnRhZ2UYAiABKAUSDwoHY29ob3J0cxgDIAMoCRIOCgZyZWFzb24YBCABKAkiTQodU2V0RmVhdHVyZVJvbGxvdXRSdWxlUmVzcG9uc2USLAoEcnVsZRgBIAEoCzIeLmJpbGxpbmcudjEuRmVhdHVyZVJvbGxvdXRSdWxlIjYKH0RlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QSEwoLZmVhdHVyZV9rZXkYASABKAkiIgogRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVzcG9uc2UiIAoeTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXNSZXF1ZXN0IlAKH0xpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVzcG9uc2USLQoFcnVsZXMYASADKAsyHi5iaWxsaW5nLnYxLkZlYXR1cmVSb2xsb3V0UnVsZSJNChdTZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSDwoHY29ob3J0cxgCIAMoCRIOCgZyZWFzb24YAyABKAkiKwoYU2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEg8KB2NvaG9ydHMYASADKAkiLAoXR2V0VGVuYW50Q29ob3J0c1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIisKGEdldFRlbmFudENvaG9ydHNSZXNwb25zZRIPCgdjb2hvcnRzGAEgAygJIhkKF0xpc3RLbm93bkNvaG9ydHNSZXF1ZXN0IisKGExpc3RLbm93bkNvaG9ydHNSZXNwb25zZRIPCgdjb2hvcnRzGAEgAygJImkKDFByb2plY3RMaW1pdBISCgpwcm9qZWN0X2lkGAEgASgJEg4KBm1ldHJpYxgCIAEoCRINCgV2YWx1ZRgDIAEoAxISCgpjcmVhdGVkX2F0GAQgASgJEhIKCnVwZGF0ZWRfYXQYBSABKAkicQoWU2V0UHJvamVjdExpbWl0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg4KBm1ldHJpYxgCIAEoCRINCgV2YWx1ZRgDIAEoAxIWCgl0ZW5hbnRfaWQYBCABKAlIAIgBAUIMCgpfdGVuYW50X2lkIkIKF1NldFByb2plY3RMaW1pdFJlc3BvbnNlEicKBWxpbWl0GAEgASgLMhguYmlsbGluZy52MS5Qcm9qZWN0TGltaXQiZAoYQ2xlYXJQcm9qZWN0TGltaXRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDgoGbWV0cmljGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBQgwKCl90ZW5hbnRfaWQiLAoZQ2xlYXJQcm9qZWN0TGltaXRSZXNwb25zZRIPCgdjbGVhcmVkGAEgASgIImgKGExpc3RQcm9qZWN0TGltaXRzUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQESFgoJdGVuYW50X2lkGAIgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDAoKX3RlbmFudF9pZCJfChlMaXN0UHJvamVjdExpbWl0c1Jlc3BvbnNlEigKBmxpbWl0cxgBIAMoCzIYLmJpbGxpbmcudjEuUHJvamVjdExpbWl0EhgKEGNhcHBhYmxlX21ldHJpY3MYAiADKAkq4wEKElN1YnNjcmlwdGlvblN0YXR1cxIjCh9TVUJTQ1JJUFRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaU1VCU0NSSVBUSU9OX1NUQVRVU19BQ1RJVkUQARIgChxTVUJTQ1JJUFRJT05fU1RBVFVTX1BBU1RfRFVFEAISIAocU1VCU0NSSVBUSU9OX1NUQVRVU19DQU5DRUxFRBADEiAKHFNVQlNDUklQVElPTl9TVEFUVVNfVFJJQUxJTkcQBBIiCh5TVUJTQ1JJUFRJT05fU1RBVFVTX0lOQ09NUExFVEUQBSpqCg9CaWxsaW5nSW50ZXJ2YWwSIAocQklMTElOR19JTlRFUlZBTF9VTlNQRUNJRklFRBAAEhoKFkJJTExJTkdfSU5URVJWQUxfTU9OVEgQARIZChVCSUxMSU5HX0lOVEVSVkFMX1lFQVIQAiqbAQoPQUlDcmVkaXRSZWZ1c2FsEiEKHUFJX0NSRURJVF9SRUZVU0FMX1VOU1BFQ0lGSUVEEAASJAogQUlfQ1JFRElUX1JFRlVTQUxfT1VUX09GX0NSRURJVFMQARIfChtBSV9DUkVESVRfUkVGVVNBTF9EQUlMWV9DQVAQAhIeChpBSV9DUkVESVRfUkVGVVNBTF9ESVNBQkxFRBADMvAfCg5CaWxsaW5nU2VydmljZRJdChBMaXN0QmlsbGluZ1BsYW5zEiMuYmlsbGluZy52MS5MaXN0QmlsbGluZ1BsYW5zUmVxdWVzdBokLmJpbGxpbmcudjEuTGlzdEJpbGxpbmdQbGFuc1Jlc3BvbnNlElcKDkdldEJpbGxpbmdQbGFuEiEuYmlsbGluZy52MS5HZXRCaWxsaW5nUGxhblJlcXVlc3QaIi5iaWxsaW5nLnYxLkdldEJpbGxpbmdQbGFuUmVzcG9uc2USYwoSR2V0RGVmYXVsdEZyZWVQbGFuEiUuYmlsbGluZy52MS5HZXREZWZhdWx0RnJlZVBsYW5SZXF1ZXN0GiYuYmlsbGluZy52MS5HZXREZWZhdWx0RnJlZVBsYW5SZXNwb25zZRJgChFDcmVhdGVCaWxsaW5nUGxhbhIkLmJpbGxpbmcudjEuQ3JlYXRlQmlsbGluZ1BsYW5SZXF1ZXN0GiUuYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nUGxhblJlc3BvbnNlEmAKEVVwZGF0ZUJpbGxpbmdQbGFuEiQuYmlsbGluZy52MS5VcGRhdGVCaWxsaW5nUGxhblJlcXVlc3QaJS5iaWxsaW5nLnYxLlVwZGF0ZUJpbGxpbmdQbGFuUmVzcG9uc2USWgoPR2V0U3Vic2NyaXB0aW9uEiIuYmlsbGluZy52MS5HZXRTdWJzY3JpcHRpb25SZXF1ZXN0GiMuYmlsbGluZy52MS5HZXRTdWJzY3JpcHRpb25SZXNwb25zZRJsChVDcmVhdGVDaGVja291dFNlc3Npb24SKC5iaWxsaW5nLnYxLkNyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlcXVlc3QaKS5iaWxsaW5nLnYxLkNyZWF0ZUNoZWNrb3V0U2Vzc2lvblJlc3BvbnNlEnsKGkNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uEi0uYmlsbGluZy52MS5DcmVhdGVCaWxsaW5nUG9ydGFsU2Vzc2lvblJlcXVlc3QaLi5iaWxsaW5nLnYxLkNyZWF0ZUJpbGxpbmdQb3J0YWxTZXNzaW9uUmVzcG9uc2USWgoPR2V0VXNhZ2VTdW1tYXJ5EiIuYmlsbGluZy52MS5HZXRVc2FnZVN1bW1hcnlSZXF1ZXN0GiMuYmlsbGluZy52MS5HZXRVc2FnZVN1bW1hcnlSZXNwb25zZRJaCg9HZXRVc2FnZUhpc3RvcnkSIi5iaWxsaW5nLnYxLkdldFVzYWdlSGlzdG9yeVJlcXVlc3QaIy5iaWxsaW5nLnYxLkdldFVzYWdlSGlzdG9yeVJlc3BvbnNlEloKD0xpc3RVc2FnZUFsZXJ0cxIiLmJpbGxpbmcudjEuTGlzdFVzYWdlQWxlcnRzUmVxdWVzdBojLmJpbGxpbmcudjEuTGlzdFVzYWdlQWxlcnRzUmVzcG9uc2USYAoRRGlzbWlzc1VzYWdlQWxlcnQSJC5iaWxsaW5nLnYxLkRpc21pc3NVc2FnZUFsZXJ0UmVxdWVzdBolLmJpbGxpbmcudjEuRGlzbWlzc1VzYWdlQWxlcnRSZXNwb25zZRJmChNDcmVhdGVDdXN0b21QYWNrYWdlEiYuYmlsbGluZy52MS5DcmVhdGVDdXN0b21QYWNrYWdlUmVxdWVzdBonLmJpbGxpbmcudjEuQ3JlYXRlQ3VzdG9tUGFja2FnZVJlc3BvbnNlEmYKE1VwZGF0ZUN1c3RvbVBhY2thZ2USJi5iaWxsaW5nLnYxLlVwZGF0ZUN1c3RvbVBhY2thZ2VSZXF1ZXN0GicuYmlsbGluZy52MS5VcGRhdGVDdXN0b21QYWNrYWdlUmVzcG9uc2USZgoTRGVsZXRlQ3VzdG9tUGFja2FnZRImLmJpbGxpbmcudjEuRGVsZXRlQ3VzdG9tUGFja2FnZVJlcXVlc3QaJy5iaWxsaW5nLnYxLkRlbGV0ZUN1c3RvbVBhY2thZ2VSZXNwb25zZRJjChJMaXN0Q3VzdG9tUGFja2FnZXMSJS5iaWxsaW5nLnYxLkxpc3RDdXN0b21QYWNrYWdlc1JlcXVlc3QaJi5iaWxsaW5nLnYxLkxpc3RDdXN0b21QYWNrYWdlc1Jlc3BvbnNlEmYKE0Fzc2lnbkN1c3RvbVBhY2thZ2USJi5iaWxsaW5nLnYxLkFzc2lnbkN1c3RvbVBhY2thZ2VSZXF1ZXN0GicuYmlsbGluZy52MS5Bc3NpZ25DdXN0b21QYWNrYWdlUmVzcG9uc2USSwoKQXNzaWduUGxhbhIdLmJpbGxpbmcudjEuQXNzaWduUGxhblJlcXVlc3QaHi5iaWxsaW5nLnYxLkFzc2lnblBsYW5SZXNwb25zZRJjChJMaXN0U3RyaXBlUHJvZHVjdHMSJS5iaWxsaW5nLnYxLkxpc3RTdHJpcGVQcm9kdWN0c1JlcXVlc3QaJi5iaWxsaW5nLnYxLkxpc3RTdHJpcGVQcm9kdWN0c1Jlc3BvbnNlElcKDkNoZWNrQUlDcmVkaXRzEiEuYmlsbGluZy52MS5DaGVja0FJQ3JlZGl0c1JlcXVlc3QaIi5iaWxsaW5nLnYxLkNoZWNrQUlDcmVkaXRzUmVzcG9uc2USZgoTUmVjb3JkQUlDcmVkaXRTcGVuZBImLmJpbGxpbmcudjEuUmVjb3JkQUlDcmVkaXRTcGVuZFJlcXVlc3QaJy5iaWxsaW5nLnYxLlJlY29yZEFJQ3JlZGl0U3BlbmRSZXNwb25zZRJaCg9SZWNvcmRNQ1BBY3Rpb24SIi5iaWxsaW5nLnYxLlJlY29yZE1DUEFjdGlvblJlcXVlc3QaIy5iaWxsaW5nLnYxLlJlY29yZE1DUEFjdGlvblJlc3BvbnNlEl0KEExpc3RBSVRvcFVwUGFja3MSIy5iaWxsaW5nLnYxLkxpc3RBSVRvcFVwUGFja3NSZXF1ZXN0GiQuYmlsbGluZy52MS5MaXN0QUlUb3BVcFBhY2tzUmVzcG9uc2USewoaQ3JlYXRlVG9wVXBDaGVja291dFNlc3Npb24SLS5iaWxsaW5nLnYxLkNyZWF0ZVRvcFVwQ2hlY2tvdXRTZXNzaW9uUmVxdWVzdBouLmJpbGxpbmcudjEuQ3JlYXRlVG9wVXBDaGVja291dFNlc3Npb25SZXNwb25zZRJ4ChlHZXRBSUNyZWRpdFNwZW5kQnJlYWtkb3duEiwuYmlsbGluZy52MS5HZXRBSUNyZWRpdFNwZW5kQnJlYWtkb3duUmVxdWVzdBotLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRTcGVuZEJyZWFrZG93blJlc3BvbnNlEnUKGEdldEFJQ3JlZGl0UGxhdGZvcm1TdGF0cxIrLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRQbGF0Zm9ybVN0YXRzUmVxdWVzdBosLmJpbGxpbmcudjEuR2V0QUlDcmVkaXRQbGF0Zm9ybVN0YXRzUmVzcG9uc2USeAoZTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudBIsLmJpbGxpbmcudjEuTGlzdEFJQ3JlZGl0U3BlbmRCeVRlbmFudFJlcXVlc3QaLS5iaWxsaW5nLnYxLkxpc3RBSUNyZWRpdFNwZW5kQnlUZW5hbnRSZXNwb25zZRJ4ChlTZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkEiwuYmlsbGluZy52MS5TZXRUZW5hbnRBSUNyZWRpdHNFbmFibGVkUmVxdWVzdBotLmJpbGxpbmcudjEuU2V0VGVuYW50QUlDcmVkaXRzRW5hYmxlZFJlc3BvbnNlElEKDExpc3RGZWF0dXJlcxIfLmJpbGxpbmcudjEuTGlzdEZlYXR1cmVzUmVxdWVzdBogLmJpbGxpbmcudjEuTGlzdEZlYXR1cmVzUmVzcG9uc2USYAoRQ2hlY2tFbnRpdGxlbWVudHMSJC5iaWxsaW5nLnYxLkNoZWNrRW50aXRsZW1lbnRzUmVxdWVzdBolLmJpbGxpbmcudjEuQ2hlY2tFbnRpdGxlbWVudHNSZXNwb25zZRJsChVTZXRGZWF0dXJlUm9sbG91dFJ1bGUSKC5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlcXVlc3QaKS5iaWxsaW5nLnYxLlNldEZlYXR1cmVSb2xsb3V0UnVsZVJlc3BvbnNlEnUKGERlbGV0ZUZlYXR1cmVSb2xsb3V0UnVsZRIrLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVxdWVzdBosLmJpbGxpbmcudjEuRGVsZXRlRmVhdHVyZVJvbGxvdXRSdWxlUmVzcG9uc2UScgoXTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXMSKi5iaWxsaW5nLnYxLkxpc3RGZWF0dXJlUm9sbG91dFJ1bGVzUmVxdWVzdBorLmJpbGxpbmcudjEuTGlzdEZlYXR1cmVSb2xsb3V0UnVsZXNSZXNwb25zZRJdChBTZXRUZW5hbnRDb2hvcnRzEiMuYmlsbGluZy52MS5TZXRUZW5hbnRDb2hvcnRzUmVxdWVzdBokLmJpbGxpbmcudjEuU2V0VGVuYW50Q29ob3J0c1Jlc3BvbnNlEl0KEEdldFRlbmFudENvaG9ydHMSIy5iaWxsaW5nLnYxLkdldFRlbmFudENvaG9ydHNSZXF1ZXN0GiQuYmlsbGluZy52MS5HZXRUZW5hbnRDb2hvcnRzUmVzcG9uc2USXQoQTGlzdEtub3duQ29ob3J0cxIjLmJpbGxpbmcudjEuTGlzdEtub3duQ29ob3J0c1JlcXVlc3QaJC5iaWxsaW5nLnYxLkxpc3RLbm93bkNvaG9ydHNSZXNwb25zZRJaCg9TZXRQcm9qZWN0TGltaXQSIi5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlcXVlc3QaIy5iaWxsaW5nLnYxLlNldFByb2plY3RMaW1pdFJlc3BvbnNlEmAKEUNsZWFyUHJvamVjdExpbWl0EiQuYmlsbGluZy52MS5DbGVhclByb2plY3RMaW1pdFJlcXVlc3QaJS5iaWxsaW5nLnYxLkNsZWFyUHJvamVjdExpbWl0UmVzcG9uc2USYAoRTGlzdFByb2plY3RMaW1pdHMSJC5iaWxsaW5nLnYxLkxpc3RQcm9qZWN0TGltaXRzUmVxdWVzdBolLmJpbGxpbmcudjEuTGlzdFByb2plY3RMaW1pdHNSZXNwb25zZRJgChFTZWxmU2VydmljZVNpZ251cBIkLmJpbGxpbmcudjEuU2VsZlNlcnZpY2VTaWdudXBSZXF1ZXN0GiUuYmlsbGluZy52MS5TZWxmU2VydmljZVNpZ251cFJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9iaWxsaW5nL3YxO2JpbGxpbmd2MWIGcHJvdG8z", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
982
+ var ListBillingPlansRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 10);
983
+ var GetBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 12);
984
+ var GetDefaultFreePlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 14);
985
+ var CreateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 16);
986
+ var UpdateBillingPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 18);
987
+ var GetSubscriptionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 20);
988
+ var CreateCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 22);
989
+ var CreateBillingPortalSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 24);
990
+ var GetUsageSummaryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 26);
991
+ var GetUsageHistoryRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 28);
992
+ var CreateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 33);
993
+ var UpdateCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 36);
994
+ var DeleteCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 38);
995
+ var ListCustomPackagesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 40);
996
+ var AssignPlanRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 42);
997
+ var AssignCustomPackageRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 44);
998
+ var ListUsageAlertsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 46);
999
+ var DismissUsageAlertRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 48);
1000
+ var CheckAICreditsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 50);
1001
+ var RecordAICreditSpendRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 52);
1002
+ var GetAICreditSpendBreakdownRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 56);
1003
+ var GetAICreditPlatformStatsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 60);
1004
+ var SetTenantAICreditsEnabledRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 64);
1005
+ var ListAICreditSpendByTenantRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 67);
1006
+ var ListAITopUpPacksRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 70);
1007
+ var CreateTopUpCheckoutSessionRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 72);
1008
+ var SelfServiceSignupRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 74);
1009
+ var ListStripeProductsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 81);
1010
+ var ListFeaturesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 84);
1011
+ var CheckEntitlementsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 86);
1012
+ var SetFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 89);
1013
+ var DeleteFeatureRolloutRuleRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 91);
1014
+ var ListFeatureRolloutRulesRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 93);
1015
+ var SetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 95);
1016
+ var GetTenantCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 97);
1017
+ var ListKnownCohortsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 99);
1018
+ var SetProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 102);
1019
+ var ClearProjectLimitRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 104);
1020
+ var ListProjectLimitsRequestSchema = /* @__PURE__ */ messageDesc8(file_billing_v1_billing, 106);
999
1021
  var BillingIntervalSchema = /* @__PURE__ */ enumDesc5(file_billing_v1_billing, 1);
1000
1022
  var BillingInterval = /* @__PURE__ */ tsEnum5(BillingIntervalSchema);
1001
1023
  var BillingService = /* @__PURE__ */ serviceDesc4(file_billing_v1_billing, 0);
@@ -1011,7 +1033,7 @@ var RealtimeService = /* @__PURE__ */ serviceDesc5(file_realtime_v1_realtime, 0)
1011
1033
  // ../../packages/proto-ts/src/configs/v1/configs_pb.js
1012
1034
  import { enumDesc as enumDesc7, fileDesc as fileDesc10, messageDesc as messageDesc10, serviceDesc as serviceDesc6, tsEnum as tsEnum7 } from "@bufbuild/protobuf/codegenv2";
1013
1035
  import { file_google_protobuf_struct as file_google_protobuf_struct5, file_google_protobuf_timestamp as file_google_protobuf_timestamp6 } from "@bufbuild/protobuf/wkt";
1014
- var file_configs_v1_configs = /* @__PURE__ */ fileDesc10("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLkAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAYQB0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitgEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EhsKDndlYmhvb2tfc2VjcmV0GAQgASgJSACIAQFCEQoPX3dlYmhvb2tfc2VjcmV0SgQIAxAEUhRwcm92aXNpb25lZF9hcGlfa2V5cyKvAwoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUSHgoWY3VzdG9tZXJfcm9sZXNfY3JlYXRlZBgOIAEoBRIeChZjdXN0b21lcl9yb2xlc191cGRhdGVkGA8gASgFIkEKHFdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJvCh1Xcml0ZUNvbmZpZ0NyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIqECCg1CdW5kbGVNb2RlbE9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIgCgZmaWVsZHMYBSADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAYgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgHIAEoCUgBiAEBEg8KB3B1Ymxpc2gYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAhCCQoHX2NvbmZpZ0IWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCKOAQoUQnVuZGxlQ3VzdG9tZXJSb2xlT3ASJgoEa2luZBgBIAEoDjIYLmNvbmZpZ3MudjEuQnVuZGxlT3BLaW5kEgoKAmlkGAIgASgJEgsKA2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEhMKC3Blcm1pc3Npb25zGAUgAygJEhIKCmlzX2RlZmF1bHQYBiABKAgiqwIKFEJ1bmRsZUF1dGhQcm92aWRlck9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIMCgR0eXBlGAUgASgJEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIUCgdlbmFibGVkGAcgASgISAGIAQESFwoKaXNfZGVmYXVsdBgIIAEoCEgCiAEBEhUKCHByaW9yaXR5GAkgASgFSAOIAQESDwoHcHVibGlzaBgKIAEoCEIJCgdfY29uZmlnQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSKrAQoKQnVuZGxlUGxhbhIpCgZtb2RlbHMYASADKAsyGS5jb25maWdzLnYxLkJ1bmRsZU1vZGVsT3ASOAoOY3VzdG9tZXJfcm9sZXMYAiADKAsyIC5jb25maWdzLnYxLkJ1bmRsZUN1c3RvbWVyUm9sZU9wEjgKDmF1dGhfcHJvdmlkZXJzGAMgAygLMiAuY29uZmlncy52MS5CdW5kbGVBdXRoUHJvdmlkZXJPcCKKAQoNQnVuZGxlT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIdChVwdWJsaXNoX2Rlc2lnbl90b2tlbnMYAiABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYAyABKAgSDwoHcHVibGlzaBgEIAEoCBISCgVwcnVuZRgFIAEoCEgAiAEBQggKBl9wcnVuZSKuAQoYQXBwbHlDb25maWdCdW5kbGVSZXF1ZXN0EhIKCmNvbmZpZ19rZXkYASABKAkSLAoLY29uZmlnX2RhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiQKBHBsYW4YAyABKAsyFi5jb25maWdzLnYxLkJ1bmRsZVBsYW4SKgoHb3B0aW9ucxgEIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucyLiAQoZQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZxIbCg53ZWJob29rX3NlY3JldBgCIAEoCUgAiAEBEi8KB3N1bW1hcnkYAyABKAsyHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnU3VtbWFyeRIbChNwdWJsaXNoZWRfbW9kZWxfaWRzGAQgAygJEiMKG3B1Ymxpc2hlZF9hdXRoX3Byb3ZpZGVyX2lkcxgFIAMoCUIRCg9fd2ViaG9va19zZWNyZXQiigEKEEJ1bmRsZUZhbWlseURpZmYSMAoGZmFtaWx5GAEgASgOMiAuY29uZmlncy52MS5CdW5kbGVSZXNvdXJjZUZhbWlseRIPCgdjcmVhdGVkGAIgASgFEg8KB3VwZGF0ZWQYAyABKAUSDwoHZGVsZXRlZBgEIAEoBRIRCgl1bmNoYW5nZWQYBSABKAUinQEKHFJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKgoHb3B0aW9ucxgDIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucxIPCgdkcnlfcnVuGAQgASgIIrkBCh1SZXNvbHZlQW5kQXBwbHlCdW5kbGVSZXNwb25zZRI1CgZyZXN1bHQYASABKAsyJS5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVzcG9uc2USJAoEcGxhbhgCIAEoCzIWLmNvbmZpZ3MudjEuQnVuZGxlUGxhbhIqCgRkaWZmGAMgAygLMhwuY29uZmlncy52MS5CdW5kbGVGYW1pbHlEaWZmEg8KB2RyeV9ydW4YBCABKAgqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADKn8KDEJ1bmRsZU9wS2luZBIeChpCVU5ETEVfT1BfS0lORF9VTlNQRUNJRklFRBAAEhkKFUJVTkRMRV9PUF9LSU5EX0NSRUFURRABEhkKFUJVTkRMRV9PUF9LSU5EX1VQREFURRACEhkKFUJVTkRMRV9PUF9LSU5EX0RFTEVURRADKpgFChRCdW5kbGVSZXNvdXJjZUZhbWlseRImCiJCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIQodQlVORExFX1JFU09VUkNFX0ZBTUlMWV9NT0RFTFMQARIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX09QRVJBVElPTlMQAhIgChxCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0hPT0tTEAMSLQopQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DT05URVhUX0RJTUVOU0lPTlMQBBIpCiVCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0NST05fU0NIRURVTEVTEAUSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BVVRIX1BST1ZJREVSUxAGEioKJkJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfUkVMWUlOR19QQVJUSUVTEAcSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DVVNUT01fRE9NQUlOUxAIEikKJUJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfQ1VTVE9NRVJfUk9MRVMQCRIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1BMQUNFTUVOVFMQChIoCiRCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0RFU0lHTl9UT0tFTlMQCxIjCh9CVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0FQSV9LRVlTEAwSHwobQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BUFBTEA0SIgoeQlVORExFX1JFU09VUkNFX0ZBTUlMWV9MT0NBTEVTEA4SKgomQlVORExFX1JFU09VUkNFX0ZBTUlMWV9WQVJJQU5UX0NBVEFMT0cQDzLsBwoOQ29uZmlnc1NlcnZpY2USSAoJR2V0Q29uZmlnEhwuY29uZmlncy52MS5HZXRDb25maWdSZXF1ZXN0Gh0uY29uZmlncy52MS5HZXRDb25maWdSZXNwb25zZRJXCg5HZXRDb25maWdCeUtleRIhLmNvbmZpZ3MudjEuR2V0Q29uZmlnQnlLZXlSZXF1ZXN0GiIuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlc3BvbnNlEk4KC0xpc3RDb25maWdzEh4uY29uZmlncy52MS5MaXN0Q29uZmlnc1JlcXVlc3QaHy5jb25maWdzLnYxLkxpc3RDb25maWdzUmVzcG9uc2USYAoRTGlzdENvbmZpZ0hpc3RvcnkSJC5jb25maWdzLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBolLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRJRCgxDcmVhdGVDb25maWcSHy5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1Jlc3BvbnNlElEKDFVwZGF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVzcG9uc2USUQoMRGVsZXRlQ29uZmlnEh8uY29uZmlncy52MS5EZWxldGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5EZWxldGVDb25maWdSZXNwb25zZRJOCgtBcHBseUNvbmZpZxIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXF1ZXN0Gh8uY29uZmlncy52MS5BcHBseUNvbmZpZ1Jlc3BvbnNlEmwKFVdyaXRlQ29uZmlnQ3JlZGVudGlhbBIoLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBopLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVzcG9uc2USYAoRQXBwbHlDb25maWdCdW5kbGUSJC5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVxdWVzdBolLmNvbmZpZ3MudjEuQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRJsChVSZXNvbHZlQW5kQXBwbHlCdW5kbGUSKC5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QaKS5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct5, file_google_protobuf_timestamp6, file_common_v1_pagination, file_models_v1_models]);
1036
+ var file_configs_v1_configs = /* @__PURE__ */ fileDesc10("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLkAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAYQB0oECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QitgEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EhsKDndlYmhvb2tfc2VjcmV0GAQgASgJSACIAQFCEQoPX3dlYmhvb2tfc2VjcmV0SgQIAxAEUhRwcm92aXNpb25lZF9hcGlfa2V5cyKvAwoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUSHgoWY3VzdG9tZXJfcm9sZXNfY3JlYXRlZBgOIAEoBRIeChZjdXN0b21lcl9yb2xlc191cGRhdGVkGA8gASgFIkEKHFdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJvCh1Xcml0ZUNvbmZpZ0NyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIqECCg1CdW5kbGVNb2RlbE9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIgCgZmaWVsZHMYBSADKAsyEC5tb2RlbHMudjEuRmllbGQSKwoGY29uZmlnGAYgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnSACIAQESIAoTZXhwZWN0ZWRfdmVyc2lvbl9pZBgHIAEoCUgBiAEBEg8KB3B1Ymxpc2gYCCABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYCSABKAhCCQoHX2NvbmZpZ0IWChRfZXhwZWN0ZWRfdmVyc2lvbl9pZCKOAQoUQnVuZGxlQ3VzdG9tZXJSb2xlT3ASJgoEa2luZBgBIAEoDjIYLmNvbmZpZ3MudjEuQnVuZGxlT3BLaW5kEgoKAmlkGAIgASgJEgsKA2tleRgDIAEoCRIMCgRuYW1lGAQgASgJEhMKC3Blcm1pc3Npb25zGAUgAygJEhIKCmlzX2RlZmF1bHQYBiABKAgiqwIKFEJ1bmRsZUF1dGhQcm92aWRlck9wEiYKBGtpbmQYASABKA4yGC5jb25maWdzLnYxLkJ1bmRsZU9wS2luZBIKCgJpZBgCIAEoCRILCgNrZXkYAyABKAkSDAoEbmFtZRgEIAEoCRIMCgR0eXBlGAUgASgJEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIUCgdlbmFibGVkGAcgASgISAGIAQESFwoKaXNfZGVmYXVsdBgIIAEoCEgCiAEBEhUKCHByaW9yaXR5GAkgASgFSAOIAQESDwoHcHVibGlzaBgKIAEoCEIJCgdfY29uZmlnQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eSKrAQoKQnVuZGxlUGxhbhIpCgZtb2RlbHMYASADKAsyGS5jb25maWdzLnYxLkJ1bmRsZU1vZGVsT3ASOAoOY3VzdG9tZXJfcm9sZXMYAiADKAsyIC5jb25maWdzLnYxLkJ1bmRsZUN1c3RvbWVyUm9sZU9wEjgKDmF1dGhfcHJvdmlkZXJzGAMgAygLMiAuY29uZmlncy52MS5CdW5kbGVBdXRoUHJvdmlkZXJPcCKKAQoNQnVuZGxlT3B0aW9ucxINCgVmb3JjZRgBIAEoCBIdChVwdWJsaXNoX2Rlc2lnbl90b2tlbnMYAiABKAgSHAoUYWxsb3dfbG9va3VwX3JlYnVpbGQYAyABKAgSDwoHcHVibGlzaBgEIAEoCBISCgVwcnVuZRgFIAEoCEgAiAEBQggKBl9wcnVuZSKuAQoYQXBwbHlDb25maWdCdW5kbGVSZXF1ZXN0EhIKCmNvbmZpZ19rZXkYASABKAkSLAoLY29uZmlnX2RhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiQKBHBsYW4YAyABKAsyFi5jb25maWdzLnYxLkJ1bmRsZVBsYW4SKgoHb3B0aW9ucxgEIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucyLiAQoZQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZxIbCg53ZWJob29rX3NlY3JldBgCIAEoCUgAiAEBEi8KB3N1bW1hcnkYAyABKAsyHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnU3VtbWFyeRIbChNwdWJsaXNoZWRfbW9kZWxfaWRzGAQgAygJEiMKG3B1Ymxpc2hlZF9hdXRoX3Byb3ZpZGVyX2lkcxgFIAMoCUIRCg9fd2ViaG9va19zZWNyZXQiigEKEEJ1bmRsZUZhbWlseURpZmYSMAoGZmFtaWx5GAEgASgOMiAuY29uZmlncy52MS5CdW5kbGVSZXNvdXJjZUZhbWlseRIPCgdjcmVhdGVkGAIgASgFEg8KB3VwZGF0ZWQYAyABKAUSDwoHZGVsZXRlZBgEIAEoBRIRCgl1bmNoYW5nZWQYBSABKAUinQEKHFJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKgoHb3B0aW9ucxgDIAEoCzIZLmNvbmZpZ3MudjEuQnVuZGxlT3B0aW9ucxIPCgdkcnlfcnVuGAQgASgIIrkBCh1SZXNvbHZlQW5kQXBwbHlCdW5kbGVSZXNwb25zZRI1CgZyZXN1bHQYASABKAsyJS5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVzcG9uc2USJAoEcGxhbhgCIAEoCzIWLmNvbmZpZ3MudjEuQnVuZGxlUGxhbhIqCgRkaWZmGAMgAygLMhwuY29uZmlncy52MS5CdW5kbGVGYW1pbHlEaWZmEg8KB2RyeV9ydW4YBCABKAgqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADKn8KDEJ1bmRsZU9wS2luZBIeChpCVU5ETEVfT1BfS0lORF9VTlNQRUNJRklFRBAAEhkKFUJVTkRMRV9PUF9LSU5EX0NSRUFURRABEhkKFUJVTkRMRV9PUF9LSU5EX1VQREFURRACEhkKFUJVTkRMRV9PUF9LSU5EX0RFTEVURRADKr8FChRCdW5kbGVSZXNvdXJjZUZhbWlseRImCiJCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1VOU1BFQ0lGSUVEEAASIQodQlVORExFX1JFU09VUkNFX0ZBTUlMWV9NT0RFTFMQARIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX09QRVJBVElPTlMQAhIgChxCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0hPT0tTEAMSLQopQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DT05URVhUX0RJTUVOU0lPTlMQBBIpCiVCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0NST05fU0NIRURVTEVTEAUSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BVVRIX1BST1ZJREVSUxAGEioKJkJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfUkVMWUlOR19QQVJUSUVTEAcSKQolQlVORExFX1JFU09VUkNFX0ZBTUlMWV9DVVNUT01fRE9NQUlOUxAIEikKJUJVTkRMRV9SRVNPVVJDRV9GQU1JTFlfQ1VTVE9NRVJfUk9MRVMQCRIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX1BMQUNFTUVOVFMQChIoCiRCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0RFU0lHTl9UT0tFTlMQCxIjCh9CVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0FQSV9LRVlTEAwSHwobQlVORExFX1JFU09VUkNFX0ZBTUlMWV9BUFBTEA0SIgoeQlVORExFX1JFU09VUkNFX0ZBTUlMWV9MT0NBTEVTEA4SKgomQlVORExFX1JFU09VUkNFX0ZBTUlMWV9WQVJJQU5UX0NBVEFMT0cQDxIlCiFCVU5ETEVfUkVTT1VSQ0VfRkFNSUxZX0VNQUlMX0NPUFkQEDLsBwoOQ29uZmlnc1NlcnZpY2USSAoJR2V0Q29uZmlnEhwuY29uZmlncy52MS5HZXRDb25maWdSZXF1ZXN0Gh0uY29uZmlncy52MS5HZXRDb25maWdSZXNwb25zZRJXCg5HZXRDb25maWdCeUtleRIhLmNvbmZpZ3MudjEuR2V0Q29uZmlnQnlLZXlSZXF1ZXN0GiIuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlc3BvbnNlEk4KC0xpc3RDb25maWdzEh4uY29uZmlncy52MS5MaXN0Q29uZmlnc1JlcXVlc3QaHy5jb25maWdzLnYxLkxpc3RDb25maWdzUmVzcG9uc2USYAoRTGlzdENvbmZpZ0hpc3RvcnkSJC5jb25maWdzLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBolLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRJRCgxDcmVhdGVDb25maWcSHy5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkNyZWF0ZUNvbmZpZ1Jlc3BvbnNlElEKDFVwZGF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuVXBkYXRlQ29uZmlnUmVzcG9uc2USUQoMRGVsZXRlQ29uZmlnEh8uY29uZmlncy52MS5EZWxldGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5EZWxldGVDb25maWdSZXNwb25zZRJOCgtBcHBseUNvbmZpZxIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXF1ZXN0Gh8uY29uZmlncy52MS5BcHBseUNvbmZpZ1Jlc3BvbnNlEmwKFVdyaXRlQ29uZmlnQ3JlZGVudGlhbBIoLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBopLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVzcG9uc2USYAoRQXBwbHlDb25maWdCdW5kbGUSJC5jb25maWdzLnYxLkFwcGx5Q29uZmlnQnVuZGxlUmVxdWVzdBolLmNvbmZpZ3MudjEuQXBwbHlDb25maWdCdW5kbGVSZXNwb25zZRJsChVSZXNvbHZlQW5kQXBwbHlCdW5kbGUSKC5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlcXVlc3QaKS5jb25maWdzLnYxLlJlc29sdmVBbmRBcHBseUJ1bmRsZVJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct5, file_google_protobuf_timestamp6, file_common_v1_pagination, file_models_v1_models]);
1015
1037
  var ConfigSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 0);
1016
1038
  var GetConfigRequestSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 1);
1017
1039
  var GetConfigByKeyRequestSchema = /* @__PURE__ */ messageDesc10(file_configs_v1_configs, 3);
@@ -1040,69 +1062,75 @@ var ConfigsService = /* @__PURE__ */ serviceDesc6(file_configs_v1_configs, 0);
1040
1062
  // ../../packages/proto-ts/src/settings/v1/settings_pb.js
1041
1063
  import { enumDesc as enumDesc8, fileDesc as fileDesc11, messageDesc as messageDesc11, serviceDesc as serviceDesc7, tsEnum as tsEnum8 } from "@bufbuild/protobuf/codegenv2";
1042
1064
  import { file_google_protobuf_struct as file_google_protobuf_struct6, file_google_protobuf_timestamp as file_google_protobuf_timestamp7 } from "@bufbuild/protobuf/wkt";
1043
- var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiqwQKCEF1ZGl0TG9nEgoKAmlkGAEgASgJEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgEIAEoCUgBiAEBEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIOCgZhY3Rpb24YBiABKAkSFQoNcmVzb3VyY2VfdHlwZRgHIAEoCRIYCgtyZXNvdXJjZV9pZBgIIAEoCUgDiAEBEiwKBmJlZm9yZRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVhZnRlchgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIXCgppcF9hZGRyZXNzGAwgASgJSAeIAQESFwoKdXNlcl9hZ2VudBgNIAEoCUgIiAEBEhcKCnJlcXVlc3RfaWQYDiABKAlICYgBAUIKCghfdXNlcl9pZEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg4KDF9yZXNvdXJjZV9pZEIJCgdfYmVmb3JlQggKBl9hZnRlckILCglfbWV0YWRhdGFCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnRCDQoLX3JlcXVlc3RfaWQiwwYKBE5vdGUSCgoCaWQYASABKAkSEwoLZW50aXR5X3R5cGUYAiABKAkSEQoJZW50aXR5X2lkGAMgASgJEh8KEmVudGl0eV9uYXR1cmFsX2tleRgEIAEoCUgAiAEBEhcKCnZlcnNpb25faWQYBSABKAlIAYgBARIoCgdjb250ZW50GAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIfChJjb250ZW50X3BsYWluX3RleHQYByABKAlIAogBARIbCg5wYXJlbnRfbm90ZV9pZBgKIAEoCUgDiAEBEhsKDnRocmVhZF9yb290X2lkGAsgASgJSASIAQESEwoLaXNfcmVzb2x2ZWQYDyABKAgSNAoLcmVzb2x2ZWRfYXQYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESGAoLcmVzb2x2ZWRfYnkYESABKAlIBogBARIcCg9yZXNvbHV0aW9uX25vdGUYEiABKAlIB4gBARIuCghtZXRhZGF0YRgUIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RICIgBARIRCgl0ZW5hbnRfaWQYHiABKAkSFwoKcHJvamVjdF9pZBgfIAEoCUgJiAEBEhIKCnZpc2liaWxpdHkYICABKAkSEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgxzdWJqZWN0X3R5cGUYPCABKAkSEgoKc3ViamVjdF9pZBg9IAEoCRIeChFzdWJqZWN0X21vZGVsX2tleRg+IAEoCUgKiAEBQhUKE19lbnRpdHlfbmF0dXJhbF9rZXlCDQoLX3ZlcnNpb25faWRCFQoTX2NvbnRlbnRfcGxhaW5fdGV4dEIRCg9fcGFyZW50X25vdGVfaWRCEQoPX3RocmVhZF9yb290X2lkQg4KDF9yZXNvbHZlZF9hdEIOCgxfcmVzb2x2ZWRfYnlCEgoQX3Jlc29sdXRpb25fbm90ZUILCglfbWV0YWRhdGFCDQoLX3Byb2plY3RfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5IvwBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSAnRvIpcBChVMaXN0QXVkaXRMb2dzUmVzcG9uc2USIwoEbG9ncxgBIAMoCzIVLnNldHRpbmdzLnYxLkF1ZGl0TG9nEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyL1AQoRQ3JlYXRlTm90ZVJlcXVlc3QSEwoLZW50aXR5X3R5cGUYASABKAkSEQoJZW50aXR5X2lkGAIgASgJEigKB2NvbnRlbnQYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhsKDnBhcmVudF9ub3RlX2lkGAQgASgJSACIAQESFAoMc3ViamVjdF90eXBlGAUgASgJEhIKCnN1YmplY3RfaWQYBiABKAkSHgoRc3ViamVjdF9tb2RlbF9rZXkYByABKAlIAYgBAUIRCg9fcGFyZW50X25vdGVfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5IjUKEkNyZWF0ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIcCg5HZXROb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSIyCg9HZXROb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUigwIKEExpc3ROb3Rlc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIAxAESgQIChALSgQICxAMUgllbnRpdHlfaWRSBWxpbWl0UgZvZmZzZXRSDnBhcmVudF9ub3RlX2lkIpABChFMaXN0Tm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIrYBChFVcGRhdGVOb3RlUmVxdWVzdBIKCgJpZBgBIAEoCRItCgdjb250ZW50GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhgKC2lzX3Jlc29sdmVkGAMgASgISAGIAQESHAoPcmVzb2x1dGlvbl9ub3RlGAQgASgJSAKIAQFCCgoIX2NvbnRlbnRCDgoMX2lzX3Jlc29sdmVkQhIKEF9yZXNvbHV0aW9uX25vdGUiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkIuQCChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBARIZCgxzdWJqZWN0X3R5cGUYBiABKAlIA4gBARIXCgpzdWJqZWN0X2lkGAcgASgJSASIAQESHgoRc3ViamVjdF9tb2RlbF9rZXkYCCABKAlIBYgBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWRCDwoNX3N1YmplY3RfdHlwZUINCgtfc3ViamVjdF9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXkiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUi5wEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnki3gEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIq4EChROb3RpZmljYXRpb25DYXRlZ29yeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEQoJaXNfYWN0aXZlGAUgASgIEjAKDGVtYWlsX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSLwoLcHVzaF9wb2xpY3kYCiABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5EjEKDWluX2FwcF9wb2xpY3kYCyABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5EhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAYgBARIXCgp1cGRhdGVkX2J5GB8gASgJSAKIAQESLgoKY3JlYXRlZF9hdBgoIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5SgQIBhAHSgQIBxAISgQICBAJUg1kZWZhdWx0X2VtYWlsUgxkZWZhdWx0X3B1c2hSDmRlZmF1bHRfaW5fYXBwItIBCiFMaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrYBCiJMaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1Jlc3BvbnNlEjUKCmNhdGVnb3JpZXMYASADKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iLAoeR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0EgoKAmlkGAEgASgJIlYKH0dldE5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USMwoIY2F0ZWdvcnkYASABKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeSKHAwohQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0EgsKA2tleRgBIAEoCRIUCgxkaXNwbGF5X25hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI1CgxlbWFpbF9wb2xpY3kYByABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAGIAQESNAoLcHVzaF9wb2xpY3kYCCABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAKIAQESNgoNaW5fYXBwX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIA4gBAUIOCgxfZGVzY3JpcHRpb25CDwoNX2VtYWlsX3BvbGljeUIOCgxfcHVzaF9wb2xpY3lCEAoOX2luX2FwcF9wb2xpY3lKBAgEEAVKBAgFEAZKBAgGEAdSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAiWQoiQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5IsIDCiFVcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkSGQoMZGlzcGxheV9uYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIWCglpc19hY3RpdmUYBCABKAhIAogBARI1CgxlbWFpbF9wb2xpY3kYCCABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SAOIAQESNAoLcHVzaF9wb2xpY3kYCSABKA4yGi5zZXR0aW5ncy52MS5DaGFubmVsUG9saWN5SASIAQESNgoNaW5fYXBwX3BvbGljeRgKIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIMCgpfaXNfYWN0aXZlQg8KDV9lbWFpbF9wb2xpY3lCDgoMX3B1c2hfcG9saWN5QhAKDl9pbl9hcHBfcG9saWN5SgQIBRAGSgQIBhAHSgQIBxAIUg1kZWZhdWx0X2VtYWlsUgxkZWZhdWx0X3B1c2hSDmRlZmF1bHRfaW5fYXBwIlkKIlVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USMwoIY2F0ZWdvcnkYASABKAsyIS5zZXR0aW5ncy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeSIvCiFEZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkiNQoiRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkEKD0xvY2FsZUNoYWluUnVuZxIOCgZsb2NhbGUYASABKAkSDgoGcmVhc29uGAIgASgJEg4KBnNlcnZlZBgDIAEoCCJNCgtMb2NhbGVDaGFpbhIRCglyZXF1ZXN0ZWQYASABKAkSKwoFcnVuZ3MYAiADKAsyHC5zZXR0aW5ncy52MS5Mb2NhbGVDaGFpblJ1bmcihQEKC0xvY2FsZURyYWZ0Eg4KBmxvY2FsZRgBIAEoCRIcCg9mYWxsYmFja19sb2NhbGUYAiABKAlIAIgBARISCgppc19kZWZhdWx0GAMgASgIEhEKCWlzX2FjdGl2ZRgEIAEoCEISChBfZmFsbGJhY2tfbG9jYWxlSgQIBRAGUgdkZWxldGVkIlMKFkdldExvY2FsZUNoYWluc1JlcXVlc3QSDwoHbG9jYWxlcxgBIAMoCRIoCgZkcmFmdHMYAiADKAsyGC5zZXR0aW5ncy52MS5Mb2NhbGVEcmFmdCJbChdHZXRMb2NhbGVDaGFpbnNSZXNwb25zZRIoCgZjaGFpbnMYASADKAsyGC5zZXR0aW5ncy52MS5Mb2NhbGVDaGFpbhIWCg5kZWZhdWx0X2xvY2FsZRgCIAEoCSKUAQoOTmF2UHJlZmVyZW5jZXMSGQoRZmF2b3JpdGVfcHJvamVjdHMYASADKAkSGgoSZmF2b3JpdGVfbmF2X2l0ZW1zGAIgAygJEhoKEmNvbGxhcHNlZF9zZWN0aW9ucxgDIAMoCRIvCg5uYXZfaXRlbV9vcmRlchgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiGgoYR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0Ik0KGUdldE5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyL8AQobVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0EjUKC3ByZWZlcmVuY2VzGAEgASgLMhsuc2V0dGluZ3MudjEuTmF2UHJlZmVyZW5jZXNIAIgBARIeChF0b2dnbGVfcHJvamVjdF9pZBgCIAEoCUgBiAEBEhwKD3RvZ2dsZV9uYXZfaXRlbRgDIAEoCUgCiAEBEhsKDnRvZ2dsZV9zZWN0aW9uGAQgASgJSAOIAQFCDgoMX3ByZWZlcmVuY2VzQhQKEl90b2dnbGVfcHJvamVjdF9pZEISChBfdG9nZ2xlX25hdl9pdGVtQhEKD190b2dnbGVfc2VjdGlvbiJQChxVcGRhdGVOYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEjAKC3ByZWZlcmVuY2VzGAEgASgLMhsuc2V0dGluZ3MudjEuTmF2UHJlZmVyZW5jZXMiXgoSUmVjZW50bHlPcGVuZWRJdGVtEgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCRIRCgl0aW1lc3RhbXAYBSABKAMikwEKGUxpc3RSZWNlbnRseU9wZW5lZFJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKGkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uc2V0dGluZ3MudjEuUmVjZW50bHlPcGVuZWRJdGVtEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyJTChpUcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJEg0KBWxhYmVsGAMgASgJEgwKBHBhdGgYBCABKAkiLgobVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiNwobUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkiLwocUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhwKGkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Ii4KG0NsZWFyUmVjZW50bHlPcGVuZWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIskGChBDb250ZXh0RGltZW5zaW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEwoLc291cmNlX3R5cGUYBSABKAkSGAoQc291cmNlX21vZGVsX2tleRgGIAEoCRIfChJkZWZhdWx0X3JlY29yZF9rZXkYByABKAlIAYgBARIRCglpc19zeXN0ZW0YCCABKAgSFwoPYnVpbHRfaW5fdmFsdWVzGAkgAygJEj0KEGV2YWx1YXRpb25fcnVsZXMYDiABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhEKCWRhdGFfdHlwZRgKIAEoCRIQCghjYXRlZ29yeRgLIAEoCRITCgtpc19yZXF1aXJlZBgMIAEoCBISCgpzb3J0X29yZGVyGA0gASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhYKCWNvbmZpZ19pZBgWIAEoCUgDiAEBEhcKCmNyZWF0ZWRfYnkYHiABKAlIBIgBARIXCgp1cGRhdGVkX2J5GB8gASgJSAWIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIB4gBAUIOCgxfZGVzY3JpcHRpb25CFQoTX2RlZmF1bHRfcmVjb3JkX2tleUITChFfZXZhbHVhdGlvbl9ydWxlc0IMCgpfY29uZmlnX2lkQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJItEBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLFAgodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBEj0KEGV2YWx1YXRpb25fcnVsZXMYByABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QhMKEV9ldmFsdWF0aW9uX3J1bGVzQgwKCl9jb25maWdfaWQiUgoeQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24i0wIKHVVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEh0KEHNvdXJjZV9tb2RlbF9rZXkYBCABKAlIAogBARIfChJkZWZhdWx0X3JlY29yZF9rZXkYBSABKAlIA4gBARIUCgdwdWJsaXNoGAYgASgISASIAQESPQoQZXZhbHVhdGlvbl9ydWxlcxgHIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAWIAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQhMKEV9zb3VyY2VfbW9kZWxfa2V5QhUKE19kZWZhdWx0X3JlY29yZF9rZXlCCgoIX3B1Ymxpc2hCEwoRX2V2YWx1YXRpb25fcnVsZXMiUgoeVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iKwodRGVsZXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiMQoeRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi7AEKIEdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0EhUKDWRpbWVuc2lvbl9rZXkYASABKAkSEwoGc2VhcmNoGAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKyAQohR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEjIKBnZhbHVlcxgBIAMoCzIiLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WYWx1ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihwQKE1ZhcmlhbnRDYXRhbG9nRW50cnkSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARI8Cg90YXJnZXRpbmdfcnVsZXMYBSABKAsyHi5leHByZXNzaW9ucy52MS5SdWxlRXhwcmVzc2lvbkgBiAEBEhAKCHByaW9yaXR5GAYgASgFEhIKCmlzX2RlZmF1bHQYByABKAgSEQoJaXNfYWN0aXZlGAggASgIEhgKC2ZhbGxiYWNrX2lkGAogASgJSAKIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgDiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0IOCgxfZmFsbGJhY2tfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlKBAgJEApSDWV4cGVyaW1lbnRfaWQi8wEKGUxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2giqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkMKGUdldFJlc29sdXRpb25TdGF0c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFIjsKD1Jlc29sdXRpb25Db3VudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRINCgVjb3VudBgDIAEoAyIwChNSZXNvbHV0aW9uWmVyb1NlcnZlEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJIoABChRSZXNvbHV0aW9uU2VydmVTdGF0cxIyCgxkaXN0cmlidXRpb24YASADKAsyHC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ291bnQSNAoKemVyb19zZXJ2ZRgCIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdXRpb25aZXJvU2VydmUiXQoaUmVzb2x1dGlvbkNvbnRleHREaW1lbnNpb24SEQoJZGltZW5zaW9uGAEgASgJEiwKBnZhbHVlcxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJkChZSZXNvbHV0aW9uQ29udGV4dFN0YXRzEjsKCmRpbWVuc2lvbnMYASADKAsyJy5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ29udGV4dERpbWVuc2lvbhINCgVub3RlcxgCIAMoCSJhChtSZXNvbHV0aW9uRmllbGRWYXJpYW50RmllbGQSEgoKZmllbGRfcGF0aBgBIAEoCRIuCgh2YXJpYW50cxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJdChtSZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSPgoMZGlzdHJpYnV0aW9uGAEgAygLMiguc2V0dGluZ3MudjEuUmVzb2x1dGlvbkZpZWxkVmFyaWFudEZpZWxkIqoCChRSZXNvbHV0aW9uVHJlbmRQb2ludBILCgNkYXkYASABKAkSDQoFdG90YWwYAiABKAMSTgoPcmVjb3JkX3ZhcmlhbnRzGAMgAygLMjUuc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuUmVjb3JkVmFyaWFudHNFbnRyeRI/Cgdsb2NhbGVzGAQgAygLMi4uc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuTG9jYWxlc0VudHJ5GjUKE1JlY29yZFZhcmlhbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARouCgxMb2NhbGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASKnAwoaR2V0UmVzb2x1dGlvblN0YXRzUmVzcG9uc2USEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFEjAKDGdlbmVyYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMbmV2ZXJfc2VydmVkGAQgASgIEjoKD3JlY29yZF92YXJpYW50cxgFIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdXRpb25TZXJ2ZVN0YXRzEjIKB2xvY2FsZXMYBiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uU2VydmVTdGF0cxI1Cghjb250ZXh0cxgHIAEoCzIjLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db250ZXh0U3RhdHMSQAoOZmllbGRfdmFyaWFudHMYCCABKAsyKC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSMAoFdHJlbmQYCSADKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uVHJlbmRQb2ludCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCLCAgoSU2VhcmNoTm90ZXNSZXF1ZXN0Eg0KBXF1ZXJ5GAEgASgJEhgKC2VudGl0eV90eXBlGAIgASgJSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBARIZCgxzdWJqZWN0X3R5cGUYByABKAlIBYgBARIeChFzdWJqZWN0X21vZGVsX2tleRgIIAEoCUgGiAEBQg4KDF9lbnRpdHlfdHlwZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RCDwoNX3N1YmplY3RfdHlwZUIUChJfc3ViamVjdF9tb2RlbF9rZXlKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQikgEKE1NlYXJjaE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIZChdHZXREZWZhdWx0TG9jYWxlUmVxdWVzdCI/ChhHZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKFkdldExvY2FsZUJ5Q29kZVJlcXVlc3QSDAoEY29kZRgBIAEoCSI+ChdHZXRMb2NhbGVCeUNvZGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi8AMKDERlc2lnblRva2VucxIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoIcmVzb2x2ZWQYAiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHZlZERlc2lnblRva2VucxIPCgd2ZXJzaW9uGAogASgFEh4KEXB1Ymxpc2hlZF92ZXJzaW9uGAsgASgFSACIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIUChJfcHVibGlzaGVkX3ZlcnNpb25CFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvoEChRSZXNvbHZlZERlc2lnblRva2VucxIvCgZjb2xvcnMYASADKAsyHy5zZXR0aW5ncy52MS5SZXNvbHZlZENvbG9yVG9rZW4SOwoNZm9udF9mYW1pbGllcxgCIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udEZhbWlseVRva2VuEjoKDGZvbnRfd2VpZ2h0cxgDIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udFdlaWdodFRva2VuEjcKCmZvbnRfc2l6ZXMYBCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjYKDGxpbmVfaGVpZ2h0cxgFIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkTnVtYmVyVG9rZW4SPAoPbGV0dGVyX3NwYWNpbmdzGAYgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI4Cgp0eXBvZ3JhcGh5GAcgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SNQoIc3BhY2luZ3MYCCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjIKBXJhZGlpGAkgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIxCgdzaGFkb3dzGAogAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dUb2tlbhIxCgdib3JkZXJzGAsgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJUb2tlbiJpChJSZXNvbHZlZENvbG9yVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udEZhbWlseVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgAygJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoBUIOCgxfZGVzY3JpcHRpb24ibQoWUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24iagoTUmVzb2x2ZWROdW1iZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoAUIOCgxfZGVzY3JpcHRpb24izAEKF1Jlc29sdmVkVHlwb2dyYXBoeVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjMKBXZhbHVlGAQgASgLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEgoFbGFiZWwYBSABKAlIAYgBARIQCgN0YWcYBiABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2xhYmVsQgYKBF90YWcijQEKE1Jlc29sdmVkU2hhZG93VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMAoGbGF5ZXJzGAQgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dMYXllckIOCgxfZGVzY3JpcHRpb24idQoTUmVzb2x2ZWRTaGFkb3dMYXllchIQCghvZmZzZXRfeBgBIAEoCRIQCghvZmZzZXRfeRgCIAEoCRIMCgRibHVyGAMgASgJEg4KBnNwcmVhZBgEIAEoCRINCgVjb2xvchgFIAEoCRINCgVpbnNldBgGIAEoCCKMAQoTUmVzb2x2ZWRCb3JkZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIvCgV2YWx1ZRgEIAEoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVmFsdWVCDgoMX2Rlc2NyaXB0aW9uIkIKE1Jlc29sdmVkQm9yZGVyVmFsdWUSDQoFY29sb3IYASABKAkSDQoFd2lkdGgYAiABKAkSDQoFc3R5bGUYAyABKAkimwEKF1Jlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhMKC2ZvbnRfZmFtaWx5GAEgAygJEhEKCWZvbnRfc2l6ZRgCIAEoCRITCgtmb250X3dlaWdodBgDIAEoBRITCgtsaW5lX2hlaWdodBgEIAEoARIWCg5sZXR0ZXJfc3BhY2luZxgFIAEoCRIWCg50ZXh0X3RyYW5zZm9ybRgGIAEoCSJEChZHZXREZXNpZ25Ub2tlbnNSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiRAoXR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIkYKGVVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkcKGlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIcChpQdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJ+ChtQdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh4KHFVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QiSgodVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIiUKI0dldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0IlEKJEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMiNwohQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0EhIKCnRva2VuX3BhdGgYASABKAkiUwoiQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRIXCg9wYXJhZ3JhcGhfY291bnQYASABKAUSFAoMcmVjb3JkX2NvdW50GAIgASgFItkCChJEZXNpZ25Ub2tlblZlcnNpb24SCgoCaWQYASABKAkSGAoQZGVzaWduX3Rva2Vuc19pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IpgBCh5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirwEKH0xpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USMQoIdmVyc2lvbnMYASADKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm4KIFJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKEAQohUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0CgtuZXdfdmVyc2lvbhgCIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyKfAwoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIEgwKBGtpbmQYCCABKAkSHgoRYXR0YWNoZWRfdG9fbW9kZWwYCSABKAlIAogBARIVCg1wYXJlbnRfZmllbGRzGAogAygJEjMKDWNhY2hlX2NvbnRyb2wYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIUChJfYXR0YWNoZWRfdG9fbW9kZWxCEAoOX2NhY2hlX2NvbnRyb2wiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIoAEChhHZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USLwoGbW9kZWxzGAEgAygLMh8uc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU1vZGVsEj4KCmRpbWVuc2lvbnMYAiADKAsyKi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhI+Cg5hdXRoX3Byb3ZpZGVycxgDIAMoCzImLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISNwoKb3BlcmF0aW9ucxgEIAMoCzIjLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFPcGVyYXRpb24SMwoIc2VnbWVudHMYBSADKAsyIS5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hU2VnbWVudBImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGAggASgISACIAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYCSABKAhIAYgBARIaChJ2YXJpYW50X2RpbWVuc2lvbnMYCiADKAlCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkSgQIBhAHSgQIBxAIUgtleHBlcmltZW50c1IOcHJvZmlsZV9zY2hlbWEiLAoeUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIokBCh9QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiLgogVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiVQohVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iNQonR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIlUKKEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVzcG9uc2USKQoGc3RhdHVzGAEgASgLMhkucHVibGlzaC52MS5QdWJsaXNoU3RhdHVzIuICChdDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIKCgJpZBgBIAEoCRIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IrsBCiNMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVxdWVzdBIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK5AQokTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1Jlc3BvbnNlEjYKCHZlcnNpb25zGAEgAygLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInMKJVJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpUBCiZSZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjkKC25ld192ZXJzaW9uGAIgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iHQobUHVibGlzaFByb2plY3RTY2hlbWFSZXF1ZXN0IvQBChxQdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlEhgKEG1vZGVsc19wdWJsaXNoZWQYASABKAUSHAoUb3BlcmF0aW9uc19wdWJsaXNoZWQYAiABKAUSJAocY29udGV4dF9kaW1lbnNpb25zX3B1Ymxpc2hlZBgDIAEoBRIgChhhdXRoX3Byb3ZpZGVyc19wdWJsaXNoZWQYBCABKAUSNAoQYnJlYWtpbmdfY2hhbmdlcxgGIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2VKBAgFEAZSGHByb2ZpbGVfc2NoZW1hX3B1Ymxpc2hlZCIgCh5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QigwEKH0dldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USKgoHcGVuZGluZxgBIAMoCzIZLnB1Ymxpc2gudjEuUGVuZGluZ0VudGl0eRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSKsAQomU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiWwonU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iOwotQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJImIKLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiqLAQoNQ2hhbm5lbFBvbGljeRIeChpDSEFOTkVMX1BPTElDWV9VTlNQRUNJRklFRBAAEh0KGUNIQU5ORUxfUE9MSUNZX0RFRkFVTFRfT04QARIeChpDSEFOTkVMX1BPTElDWV9ERUZBVUxUX09GRhACEhsKF0NIQU5ORUxfUE9MSUNZX1JFUVVJUkVEEAMyjDIKD1NldHRpbmdzU2VydmljZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtTZWFyY2hOb3RlcxIfLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USfQoaTGlzdE5vdGlmaWNhdGlvbkNhdGVnb3JpZXMSLi5zZXR0aW5ncy52MS5MaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1JlcXVlc3QaLy5zZXR0aW5ncy52MS5MaXN0Tm90aWZpY2F0aW9uQ2F0ZWdvcmllc1Jlc3BvbnNlEnQKF0dldE5vdGlmaWNhdGlvbkNhdGVnb3J5Eisuc2V0dGluZ3MudjEuR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Giwuc2V0dGluZ3MudjEuR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJ9ChpDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeRIuLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBovLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USfQoaVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnkSLi5zZXR0aW5ncy52MS5VcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QaLy5zZXR0aW5ncy52MS5VcGRhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEn0KGkRlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5Ei4uc2V0dGluZ3MudjEuRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuRGVsZXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJcCg9HZXRMb2NhbGVDaGFpbnMSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVDaGFpbnNSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQ2hhaW5zUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USbgoVTGlzdENvbnRleHREaW1lbnNpb25zEikuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVxdWVzdBoqLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEmgKE0dldENvbnRleHREaW1lbnNpb24SJy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBooLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZDcmVhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWVXBkYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkRlbGV0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzEi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QaLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USXwoQR2V0RWRpdG9yQ29uZmlncxIkLnNldHRpbmdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEmUKEkxpc3RWYXJpYW50Q2F0YWxvZxImLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QaJy5zZXR0aW5ncy52MS5MaXN0VmFyaWFudENhdGFsb2dSZXNwb25zZRJxChZHZXRWYXJpYW50Q2F0YWxvZ0VudHJ5Eiouc2V0dGluZ3MudjEuR2V0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaKy5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLkNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGVVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5VcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlEZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USZQoSR2V0UmVzb2x1dGlvblN0YXRzEiYuc2V0dGluZ3MudjEuR2V0UmVzb2x1dGlvblN0YXRzUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldFJlc29sdXRpb25TdGF0c1Jlc3BvbnNlEl8KEEdldFByb2plY3RTY2hlbWESJC5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXNwb25zZRJ0ChdQdWJsaXNoQ29udGV4dERpbWVuc2lvbhIrLnNldHRpbmdzLnYxLlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USegoZVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvbhItLnNldHRpbmdzLnYxLlVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEo8BCiBHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1cxI0LnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVxdWVzdBo1LnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVzcG9uc2USjAEKH1NjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2gSMy5zZXR0aW5ncy52MS5TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo0LnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRKhAQomQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2gSOi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QaOy5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEn0KGkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzEi4uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRJ0ChdMaXN0RGVzaWduVG9rZW5WZXJzaW9ucxIrLnNldHRpbmdzLnYxLkxpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVxdWVzdBosLnNldHRpbmdzLnYxLkxpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USegoZUmVzdG9yZURlc2lnblRva2VuVmVyc2lvbhItLnNldHRpbmdzLnYxLlJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0Gi4uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9zZXR0aW5ncy92MTtzZXR0aW5nc3YxYgZwcm90bzM", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination]);
1065
+ var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiqwQKCEF1ZGl0TG9nEgoKAmlkGAEgASgJEi0KCXRpbWVzdGFtcBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoHdXNlcl9pZBgDIAEoCUgAiAEBEhYKCXRlbmFudF9pZBgEIAEoCUgBiAEBEhcKCnByb2plY3RfaWQYBSABKAlIAogBARIOCgZhY3Rpb24YBiABKAkSFQoNcmVzb3VyY2VfdHlwZRgHIAEoCRIYCgtyZXNvdXJjZV9pZBgIIAEoCUgDiAEBEiwKBmJlZm9yZRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVhZnRlchgKIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghtZXRhZGF0YRgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIXCgppcF9hZGRyZXNzGAwgASgJSAeIAQESFwoKdXNlcl9hZ2VudBgNIAEoCUgIiAEBEhcKCnJlcXVlc3RfaWQYDiABKAlICYgBAUIKCghfdXNlcl9pZEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQg4KDF9yZXNvdXJjZV9pZEIJCgdfYmVmb3JlQggKBl9hZnRlckILCglfbWV0YWRhdGFCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnRCDQoLX3JlcXVlc3RfaWQi+gkKBE5vdGUSCgoCaWQYASABKAkSFwoKdmVyc2lvbl9pZBgFIAEoCUgAiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgBiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAKIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIA4gBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgFiAEBEhwKD3Jlc29sdXRpb25fbm90ZRgSIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKdmlzaWJpbGl0eRggIAEoCRISCgpjcmVhdGVkX2J5GCggASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhQKDHN1YmplY3RfdHlwZRg8IAEoCRISCgpzdWJqZWN0X2lkGD0gASgJEh4KEXN1YmplY3RfbW9kZWxfa2V5GD4gASgJSAmIAQESIQoUcmVwbHlfdG9fY3VzdG9tZXJfaWQYPyABKAlICogBARIYCgthc3NpZ25lZV9pZBhAIAEoCUgLiAEBEjEKCGR1ZV9kYXRlGEUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgMiAEBEhMKC2NoaWxkX2NvdW50GEEgASgFEhwKFHJlc29sdmVkX2NoaWxkX2NvdW50GEIgASgFEjAKC2F0dGFjaG1lbnRzGEMgAygLMhsuc2V0dGluZ3MudjEuTm90ZUF0dGFjaG1lbnQSJAoXYW5vbnltb3VzX2NvbnRhY3RfZW1haWwYRCABKAlIDYgBARIZCgxhbmNob3JfZmllbGQYRiABKAlIDogBARIbCg5hbmNob3Jfbm9kZV9pZBhHIAEoCUgPiAEBEhsKDmFuY2hvcl9zbmlwcGV0GEggASgJSBCIAQFCDQoLX3ZlcnNpb25faWRCFQoTX2NvbnRlbnRfcGxhaW5fdGV4dEIRCg9fcGFyZW50X25vdGVfaWRCEQoPX3RocmVhZF9yb290X2lkQg4KDF9yZXNvbHZlZF9hdEIOCgxfcmVzb2x2ZWRfYnlCEgoQX3Jlc29sdXRpb25fbm90ZUILCglfbWV0YWRhdGFCDQoLX3Byb2plY3RfaWRCFAoSX3N1YmplY3RfbW9kZWxfa2V5QhcKFV9yZXBseV90b19jdXN0b21lcl9pZEIOCgxfYXNzaWduZWVfaWRCCwoJX2R1ZV9kYXRlQhoKGF9hbm9ueW1vdXNfY29udGFjdF9lbWFpbEIPCg1fYW5jaG9yX2ZpZWxkQhEKD19hbmNob3Jfbm9kZV9pZEIRCg9fYW5jaG9yX3NuaXBwZXRKBAgCEANKBAgDEARKBAgEEAVSC2VudGl0eV90eXBlUgllbnRpdHlfaWRSEmVudGl0eV9uYXR1cmFsX2tleSKSAQoOTm90ZUF0dGFjaG1lbnQSDwoHZmlsZV9pZBgBIAEoCRIQCghmaWxlbmFtZRgCIAEoCRIRCgltaW1lX3R5cGUYAyABKAkSDAoEc2l6ZRgEIAEoAxILCgN1cmwYBSABKAkSLwoLYXR0YWNoZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIvwBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgIEAlKBAgJEApKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXRSAnRvIpcBChVMaXN0QXVkaXRMb2dzUmVzcG9uc2USIwoEbG9ncxgBIAMoCzIVLnNldHRpbmdzLnYxLkF1ZGl0TG9nEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyL8BAoRQ3JlYXRlTm90ZVJlcXVlc3QSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBARIUCgxzdWJqZWN0X3R5cGUYBSABKAkSEgoKc3ViamVjdF9pZBgGIAEoCRIeChFzdWJqZWN0X21vZGVsX2tleRgHIAEoCUgBiAEBEh4KEXJlcGx5X3RvX2N1c3RvbWVyGAggASgISAKIAQESGAoLYXNzaWduZWVfaWQYCSABKAlIA4gBARIbChNhdHRhY2htZW50X2ZpbGVfaWRzGAogAygJEjEKCGR1ZV9kYXRlGAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiQKF2Fub255bW91c19jb250YWN0X2VtYWlsGAsgASgJSAWIAQESGQoMYW5jaG9yX2ZpZWxkGA0gASgJSAaIAQESGwoOYW5jaG9yX25vZGVfaWQYDiABKAlIB4gBARIbCg5hbmNob3Jfc25pcHBldBgPIAEoCUgIiAEBQhEKD19wYXJlbnRfbm90ZV9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXlCFAoSX3JlcGx5X3RvX2N1c3RvbWVyQg4KDF9hc3NpZ25lZV9pZEILCglfZHVlX2RhdGVCGgoYX2Fub255bW91c19jb250YWN0X2VtYWlsQg8KDV9hbmNob3JfZmllbGRCEQoPX2FuY2hvcl9ub2RlX2lkQhEKD19hbmNob3Jfc25pcHBldEoECAEQAkoECAIQA1ILZW50aXR5X3R5cGVSCWVudGl0eV9pZCI1ChJDcmVhdGVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiHAoOR2V0Tm90ZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Tm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIqcCChBMaXN0Tm90ZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQESFQoIb3JkZXJfYnkYCCABKAlIBYgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QgsKCV9vcmRlcl9ieUoECAIQA0oECAMQBEoECAoQC0oECAsQDFIJZW50aXR5X2lkUgVsaW1pdFIGb2Zmc2V0Ug5wYXJlbnRfbm90ZV9pZCKQAQoRTGlzdE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLQAgoRVXBkYXRlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkSLQoHY29udGVudBgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIYCgtpc19yZXNvbHZlZBgDIAEoCEgBiAEBEhwKD3Jlc29sdXRpb25fbm90ZRgEIAEoCUgCiAEBEhgKC2Fzc2lnbmVlX2lkGAUgASgJSAOIAQESMQoIZHVlX2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOY2xlYXJfZHVlX2RhdGUYByABKAhIBYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWRCEgoQX3Jlc29sdXRpb25fbm90ZUIOCgxfYXNzaWduZWVfaWRCCwoJX2R1ZV9kYXRlQhEKD19jbGVhcl9kdWVfZGF0ZSI1ChJVcGRhdGVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiHwoRRGVsZXRlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiJQoSRGVsZXRlTm90ZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgirAUKC05vdGVNZW50aW9uEgoKAmlkGAEgASgJEg8KB25vdGVfaWQYAiABKAkSGQoRbWVudGlvbmVkX3VzZXJfaWQYAyABKAkSDgoGc3RhdHVzGAQgASgJEjAKB3NlZW5fYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESOAoPYWNrbm93bGVkZ2VkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjUKDGNvbXBsZXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIbCg5jb21wbGV0ZWRfbm90ZRgIIAEoCUgDiAEBEjUKDGRpc21pc3NlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIbCg5kaXNtaXNzX3JlYXNvbhgKIAEoCUgFiAEBEjEKCGR1ZV9kYXRlGAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBEhEKCXRlbmFudF9pZBgUIAEoCRIXCgpwcm9qZWN0X2lkGBUgASgJSAeIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3NlZW5fYXRCEgoQX2Fja25vd2xlZGdlZF9hdEIPCg1fY29tcGxldGVkX2F0QhEKD19jb21wbGV0ZWRfbm90ZUIPCg1fZGlzbWlzc2VkX2F0QhEKD19kaXNtaXNzX3JlYXNvbkILCglfZHVlX2RhdGVCDQoLX3Byb2plY3RfaWQiuAIKEk1lbnRpb25XaXRoQ29udGV4dBIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24SHwoEbm90ZRgCIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUSGAoLYXV0aG9yX25hbWUYAyABKAlIAIgBARIZCgxzdWJqZWN0X3R5cGUYBiABKAlIAYgBARIXCgpzdWJqZWN0X2lkGAcgASgJSAKIAQESHgoRc3ViamVjdF9tb2RlbF9rZXkYCCABKAlIA4gBAUIOCgxfYXV0aG9yX25hbWVCDwoNX3N1YmplY3RfdHlwZUINCgtfc3ViamVjdF9pZEIUChJfc3ViamVjdF9tb2RlbF9rZXlKBAgEEAVKBAgFEAZSC2VudGl0eV90eXBlUgllbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUi5wEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ibgoYU2V0TWVudGlvbkR1ZURhdGVSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSMQoIZHVlX2RhdGUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCCwoJX2R1ZV9kYXRlIkYKGVNldE1lbnRpb25EdWVEYXRlUmVzcG9uc2USKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uIr0DCgZMb2NhbGUSCgoCaWQYASABKAkSDgoGbG9jYWxlGAIgASgJEhQKDGRpc3BsYXlfbmFtZRgDIAEoCRIYCgtuYXRpdmVfbmFtZRgEIAEoCUgAiAEBEhIKCmlzX2RlZmF1bHQYBSABKAgSEQoJaXNfYWN0aXZlGAYgASgIEg4KBmlzX3J0bBgHIAEoCBIcCg9mYWxsYmFja19sb2NhbGUYCCABKAlIAYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAKIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9uYXRpdmVfbmFtZUISChBfZmFsbGJhY2tfbG9jYWxlQg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5SgQICRAKUhFmYWxsYmFja19wcmlvcml0eSLeAQoSTGlzdExvY2FsZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKWAQoTTGlzdExvY2FsZXNSZXNwb25zZRIkCgdsb2NhbGVzGAEgAygLMhMuc2V0dGluZ3MudjEuTG9jYWxlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIeChBHZXRMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldExvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSLfAQoTQ3JlYXRlTG9jYWxlUmVxdWVzdBIOCgZsb2NhbGUYASABKAkSFAoMZGlzcGxheV9uYW1lGAIgASgJEhgKC25hdGl2ZV9uYW1lGAMgASgJSACIAQESFwoKaXNfZGVmYXVsdBgEIAEoCEgBiAEBEhMKBmlzX3J0bBgFIAEoCEgCiAEBEhwKD2ZhbGxiYWNrX2xvY2FsZRgGIAEoCUgDiAEBQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIJCgdfaXNfcnRsQhIKEF9mYWxsYmFja19sb2NhbGUiOwoUQ3JlYXRlTG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIpcCChNVcGRhdGVMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhkKDGRpc3BsYXlfbmFtZRgCIAEoCUgAiAEBEhgKC25hdGl2ZV9uYW1lGAMgASgJSAGIAQESFwoKaXNfZGVmYXVsdBgEIAEoCEgCiAEBEhYKCWlzX2FjdGl2ZRgFIAEoCEgDiAEBEhMKBmlzX3J0bBgGIAEoCEgEiAEBEhwKD2ZhbGxiYWNrX2xvY2FsZRgHIAEoCUgFiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX25hdGl2ZV9uYW1lQg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmVCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFFVwZGF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSIhChNEZWxldGVMb2NhbGVSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZUxvY2FsZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgirgQKFE5vdGlmaWNhdGlvbkNhdGVnb3J5EgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIUCgxkaXNwbGF5X25hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARIRCglpc19hY3RpdmUYBSABKAgSMAoMZW1haWxfcG9saWN5GAkgASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeRIvCgtwdXNoX3BvbGljeRgKIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSMQoNaW5fYXBwX3BvbGljeRgLIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3kSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgBiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAogBARIuCgpjcmVhdGVkX2F0GCggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GCkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlKBAgGEAdKBAgHEAhKBAgIEAlSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAi0gEKIUxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QitgEKIkxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzUmVzcG9uc2USNQoKY2F0ZWdvcmllcxgBIAMoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIsCh5HZXROb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCgoCaWQYASABKAkiVgofR2V0Tm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5IocDCiFDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QSCwoDa2V5GAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjUKDGVtYWlsX3BvbGljeRgHIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIAYgBARI0CgtwdXNoX3BvbGljeRgIIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIAogBARI2Cg1pbl9hcHBfcG9saWN5GAkgASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeUgDiAEBQg4KDF9kZXNjcmlwdGlvbkIPCg1fZW1haWxfcG9saWN5Qg4KDF9wdXNoX3BvbGljeUIQCg5faW5fYXBwX3BvbGljeUoECAQQBUoECAUQBkoECAYQB1INZGVmYXVsdF9lbWFpbFIMZGVmYXVsdF9wdXNoUg5kZWZhdWx0X2luX2FwcCJZCiJDcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEjMKCGNhdGVnb3J5GAEgASgLMiEuc2V0dGluZ3MudjEuTm90aWZpY2F0aW9uQ2F0ZWdvcnkiwgMKIVVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtkZXNjcmlwdGlvbhgDIAEoCUgBiAEBEhYKCWlzX2FjdGl2ZRgEIAEoCEgCiAEBEjUKDGVtYWlsX3BvbGljeRgIIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIA4gBARI0CgtwdXNoX3BvbGljeRgJIAEoDjIaLnNldHRpbmdzLnYxLkNoYW5uZWxQb2xpY3lIBIgBARI2Cg1pbl9hcHBfcG9saWN5GAogASgOMhouc2V0dGluZ3MudjEuQ2hhbm5lbFBvbGljeUgFiAEBQg8KDV9kaXNwbGF5X25hbWVCDgoMX2Rlc2NyaXB0aW9uQgwKCl9pc19hY3RpdmVCDwoNX2VtYWlsX3BvbGljeUIOCgxfcHVzaF9wb2xpY3lCEAoOX2luX2FwcF9wb2xpY3lKBAgFEAZKBAgGEAdKBAgHEAhSDWRlZmF1bHRfZW1haWxSDGRlZmF1bHRfcHVzaFIOZGVmYXVsdF9pbl9hcHAiWQoiVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRIzCghjYXRlZ29yeRgBIAEoCzIhLnNldHRpbmdzLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5Ii8KIURlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBIKCgJpZBgBIAEoCSI1CiJEZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiQQoPTG9jYWxlQ2hhaW5SdW5nEg4KBmxvY2FsZRgBIAEoCRIOCgZyZWFzb24YAiABKAkSDgoGc2VydmVkGAMgASgIIk0KC0xvY2FsZUNoYWluEhEKCXJlcXVlc3RlZBgBIAEoCRIrCgVydW5ncxgCIAMoCzIcLnNldHRpbmdzLnYxLkxvY2FsZUNoYWluUnVuZyKFAQoLTG9jYWxlRHJhZnQSDgoGbG9jYWxlGAEgASgJEhwKD2ZhbGxiYWNrX2xvY2FsZRgCIAEoCUgAiAEBEhIKCmlzX2RlZmF1bHQYAyABKAgSEQoJaXNfYWN0aXZlGAQgASgIQhIKEF9mYWxsYmFja19sb2NhbGVKBAgFEAZSB2RlbGV0ZWQiUwoWR2V0TG9jYWxlQ2hhaW5zUmVxdWVzdBIPCgdsb2NhbGVzGAEgAygJEigKBmRyYWZ0cxgCIAMoCzIYLnNldHRpbmdzLnYxLkxvY2FsZURyYWZ0IlsKF0dldExvY2FsZUNoYWluc1Jlc3BvbnNlEigKBmNoYWlucxgBIAMoCzIYLnNldHRpbmdzLnYxLkxvY2FsZUNoYWluEhYKDmRlZmF1bHRfbG9jYWxlGAIgASgJIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiyQYKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSPQoQZXZhbHVhdGlvbl9ydWxlcxgOIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQESEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFgoJY29uZmlnX2lkGBYgASgJSAOIAQESFwoKY3JlYXRlZF9ieRgeIAEoCUgEiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIBYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QhMKEV9ldmFsdWF0aW9uX3J1bGVzQgwKCl9jb25maWdfaWRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IjMKFUNvbnRleHREaW1lbnNpb25WYWx1ZRILCgNrZXkYASABKAkSDQoFbGFiZWwYAiABKAki0QEKHExpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QSEwoGc2VhcmNoGAEgASgJSACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEoECAoQC0oECAsQDFIFbGltaXRSBm9mZnNldCKtAQodTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USMQoKZGltZW5zaW9ucxgBIAMoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIigKGkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIk8KG0dldENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIsUCCh1DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEhMKC3NvdXJjZV90eXBlGAQgASgJEhgKEHNvdXJjZV9tb2RlbF9rZXkYBSABKAkSHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAYgASgJSAGIAQESPQoQZXZhbHVhdGlvbl9ydWxlcxgHIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAKIAQESFgoJY29uZmlnX2lkGAggASgJSAOIAQFCDgoMX2Rlc2NyaXB0aW9uQhUKE19kZWZhdWx0X3JlY29yZF9rZXlCEwoRX2V2YWx1YXRpb25fcnVsZXNCDAoKX2NvbmZpZ19pZCJSCh5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLTAgodVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgCiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgDiAEBEhQKB3B1Ymxpc2gYBiABKAhIBIgBARI9ChBldmFsdWF0aW9uX3J1bGVzGAcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEwoRX3NvdXJjZV9tb2RlbF9rZXlCFQoTX2RlZmF1bHRfcmVjb3JkX2tleUIKCghfcHVibGlzaEITChFfZXZhbHVhdGlvbl9ydWxlcyJSCh5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiIrCh1EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIxCh5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLsAQogR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QSFQoNZGltZW5zaW9uX2tleRgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IrIBCiFHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USMgoGdmFsdWVzGAEgAygLMiIuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZhbHVlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyLwAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUoECAkQCkoECAoQC1INZXhwZXJpbWVudF9pZFILZmFsbGJhY2tfaWQi8wEKGUxpc3RWYXJpYW50Q2F0YWxvZ1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIAhADSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0UgZzZWFyY2giqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkMKGUdldFJlc29sdXRpb25TdGF0c1JlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFIjsKD1Jlc29sdXRpb25Db3VudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRINCgVjb3VudBgDIAEoAyIwChNSZXNvbHV0aW9uWmVyb1NlcnZlEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJIoABChRSZXNvbHV0aW9uU2VydmVTdGF0cxIyCgxkaXN0cmlidXRpb24YASADKAsyHC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ291bnQSNAoKemVyb19zZXJ2ZRgCIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdXRpb25aZXJvU2VydmUiXQoaUmVzb2x1dGlvbkNvbnRleHREaW1lbnNpb24SEQoJZGltZW5zaW9uGAEgASgJEiwKBnZhbHVlcxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJkChZSZXNvbHV0aW9uQ29udGV4dFN0YXRzEjsKCmRpbWVuc2lvbnMYASADKAsyJy5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQ29udGV4dERpbWVuc2lvbhINCgVub3RlcxgCIAMoCSJhChtSZXNvbHV0aW9uRmllbGRWYXJpYW50RmllbGQSEgoKZmllbGRfcGF0aBgBIAEoCRIuCgh2YXJpYW50cxgCIAMoCzIcLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db3VudCJdChtSZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSPgoMZGlzdHJpYnV0aW9uGAEgAygLMiguc2V0dGluZ3MudjEuUmVzb2x1dGlvbkZpZWxkVmFyaWFudEZpZWxkIqoCChRSZXNvbHV0aW9uVHJlbmRQb2ludBILCgNkYXkYASABKAkSDQoFdG90YWwYAiABKAMSTgoPcmVjb3JkX3ZhcmlhbnRzGAMgAygLMjUuc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuUmVjb3JkVmFyaWFudHNFbnRyeRI/Cgdsb2NhbGVzGAQgAygLMi4uc2V0dGluZ3MudjEuUmVzb2x1dGlvblRyZW5kUG9pbnQuTG9jYWxlc0VudHJ5GjUKE1JlY29yZFZhcmlhbnRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ARouCgxMb2NhbGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgDOgI4ASKnAwoaR2V0UmVzb2x1dGlvblN0YXRzUmVzcG9uc2USEQoJcmVjb3JkX2lkGAEgASgJEhMKC3dpbmRvd19kYXlzGAIgASgFEjAKDGdlbmVyYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMbmV2ZXJfc2VydmVkGAQgASgIEjoKD3JlY29yZF92YXJpYW50cxgFIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdXRpb25TZXJ2ZVN0YXRzEjIKB2xvY2FsZXMYBiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uU2VydmVTdGF0cxI1Cghjb250ZXh0cxgHIAEoCzIjLnNldHRpbmdzLnYxLlJlc29sdXRpb25Db250ZXh0U3RhdHMSQAoOZmllbGRfdmFyaWFudHMYCCABKAsyKC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uRmllbGRWYXJpYW50U3RhdHMSMAoFdHJlbmQYCSADKAsyIS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uVHJlbmRQb2ludCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCKFBAoMTm90ZUFwcHJvdmFsEgoKAmlkGAEgASgJEg8KB25vdGVfaWQYAiABKAkSFAoMcmVxdWVzdGVkX2J5GAMgASgJEhkKDGV4ZWN1dGlvbl9pZBgEIAEoCUgAiAEBEhEKCXRvb2xfbmFtZRgFIAEoCRIqCgl0b29sX2FyZ3MYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB3N1bW1hcnkYByABKAkSFQoNcmVxdWlyZWRfdmVyYhgIIAEoCRIOCgZzdGF0dXMYCSABKAkSFwoKZGVjaWRlZF9ieRgKIAEoCUgBiAEBEjMKCmRlY2lkZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGgoNZGVjaWRlX3JlYXNvbhgMIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg8KDV9leGVjdXRpb25faWRCDQoLX2RlY2lkZWRfYnlCDQoLX2RlY2lkZWRfYXRCEAoOX2RlY2lkZV9yZWFzb24ivwEKGUNyZWF0ZU5vdGVBcHByb3ZhbFJlcXVlc3QSDwoHbm90ZV9pZBgBIAEoCRIRCgl0b29sX25hbWUYAiABKAkSKgoJdG9vbF9hcmdzGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdzdW1tYXJ5GAQgASgJEhUKDXJlcXVpcmVkX3ZlcmIYBSABKAkSGQoMZXhlY3V0aW9uX2lkGAYgASgJSACIAQFCDwoNX2V4ZWN1dGlvbl9pZCJJChpDcmVhdGVOb3RlQXBwcm92YWxSZXNwb25zZRIrCghhcHByb3ZhbBgBIAEoCzIZLnNldHRpbmdzLnYxLk5vdGVBcHByb3ZhbCIrChhMaXN0Tm90ZUFwcHJvdmFsc1JlcXVlc3QSDwoHbm90ZV9pZBgBIAEoCSJJChlMaXN0Tm90ZUFwcHJvdmFsc1Jlc3BvbnNlEiwKCWFwcHJvdmFscxgBIAMoCzIZLnNldHRpbmdzLnYxLk5vdGVBcHByb3ZhbCJiChlEZWNpZGVOb3RlQXBwcm92YWxSZXF1ZXN0EhMKC2FwcHJvdmFsX2lkGAEgASgJEhAKCGRlY2lzaW9uGAIgASgJEhMKBnJlYXNvbhgDIAEoCUgAiAEBQgkKB19yZWFzb24iSQoaRGVjaWRlTm90ZUFwcHJvdmFsUmVzcG9uc2USKwoIYXBwcm92YWwYASABKAsyGS5zZXR0aW5ncy52MS5Ob3RlQXBwcm92YWwiVQoYQ3JlYXRlTm90ZUhhbmRvZmZSZXF1ZXN0Eg8KB25vdGVfaWQYASABKAkSGAoLaW5zdHJ1Y3Rpb24YAiABKAlIAIgBAUIOCgxfaW5zdHJ1Y3Rpb24iMQoZQ3JlYXRlTm90ZUhhbmRvZmZSZXNwb25zZRIUCgxleGVjdXRpb25faWQYASABKAkiLgobR2V0Tm90ZUhhbmRvZmZTdGF0dXNSZXF1ZXN0Eg8KB25vdGVfaWQYASABKAkirgEKHEdldE5vdGVIYW5kb2ZmU3RhdHVzUmVzcG9uc2USGQoMZXhlY3V0aW9uX2lkGAIgASgJSACIAQESEwoGc3RhdHVzGAMgASgJSAGIAQESMwoKdXBkYXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIPCg1fZXhlY3V0aW9uX2lkQgkKB19zdGF0dXNCDQoLX3VwZGF0ZWRfYXQixwIKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgVhZnRlchgDIAEoCUgAiAEBEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWZpcnN0GAUgASgFSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhkKDHN1YmplY3RfdHlwZRgHIAEoCUgEiAEBEh4KEXN1YmplY3RfbW9kZWxfa2V5GAggASgJSAWIAQESEQoEbW9kZRgJIAEoCUgGiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdEIPCg1fc3ViamVjdF90eXBlQhQKEl9zdWJqZWN0X21vZGVsX2tleUIHCgVfbW9kZUoECAIQA0oECAoQC0oECAsQDFILZW50aXR5X3R5cGVSBWxpbWl0UgZvZmZzZXQi2QEKE1NlYXJjaE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAkSEwoLc2VydmVkX21vZGUYBSABKAkSHAoPZGVncmFkZWRfcmVhc29uGAYgASgJSAGIAQFCDAoKX3BhZ2VfaW5mb0ISChBfZGVncmFkZWRfcmVhc29uIhkKF0dldERlZmF1bHRMb2NhbGVSZXF1ZXN0Ij8KGEdldERlZmF1bHRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiJgoWR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBIMCgRjb2RlGAEgASgJIj4KF0dldExvY2FsZUJ5Q29kZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSLwAwoMRGVzaWduVG9rZW5zEikKCGRvY3VtZW50GAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCghyZXNvbHZlZBgCIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdmVkRGVzaWduVG9rZW5zEg8KB3ZlcnNpb24YCiABKAUSHgoRcHVibGlzaGVkX3ZlcnNpb24YCyABKAVIAIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhQKEl9wdWJsaXNoZWRfdmVyc2lvbkIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQi+gQKFFJlc29sdmVkRGVzaWduVG9rZW5zEi8KBmNvbG9ycxgBIAMoCzIfLnNldHRpbmdzLnYxLlJlc29sdmVkQ29sb3JUb2tlbhI7Cg1mb250X2ZhbWlsaWVzGAIgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SOgoMZm9udF93ZWlnaHRzGAMgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250V2VpZ2h0VG9rZW4SNwoKZm9udF9zaXplcxgEIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SNgoMbGluZV9oZWlnaHRzGAUgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWROdW1iZXJUb2tlbhI8Cg9sZXR0ZXJfc3BhY2luZ3MYBiADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjgKCnR5cG9ncmFwaHkYByADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlUb2tlbhI1CghzcGFjaW5ncxgIIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SMgoFcmFkaWkYCSADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjEKB3NoYWRvd3MYCiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd1Rva2VuEjEKB2JvcmRlcnMYCyADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZEJvcmRlclRva2VuImkKElJlc29sdmVkQ29sb3JUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24ibgoXUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCADKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udFdlaWdodFRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgFQg4KDF9kZXNjcmlwdGlvbiJtChZSZXNvbHZlZERpbWVuc2lvblRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgJQg4KDF9kZXNjcmlwdGlvbiJqChNSZXNvbHZlZE51bWJlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgBQg4KDF9kZXNjcmlwdGlvbiLMAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMwoFdmFsdWUYBCABKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlWYWx1ZRISCgVsYWJlbBgFIAEoCUgBiAEBEhAKA3RhZxgGIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkIICgZfbGFiZWxCBgoEX3RhZyKNAQoTUmVzb2x2ZWRTaGFkb3dUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIwCgZsYXllcnMYBCADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd0xheWVyQg4KDF9kZXNjcmlwdGlvbiJ1ChNSZXNvbHZlZFNoYWRvd0xheWVyEhAKCG9mZnNldF94GAEgASgJEhAKCG9mZnNldF95GAIgASgJEgwKBGJsdXIYAyABKAkSDgoGc3ByZWFkGAQgASgJEg0KBWNvbG9yGAUgASgJEg0KBWluc2V0GAYgASgIIowBChNSZXNvbHZlZEJvcmRlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEi8KBXZhbHVlGAQgASgLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJWYWx1ZUIOCgxfZGVzY3JpcHRpb24iQgoTUmVzb2x2ZWRCb3JkZXJWYWx1ZRINCgVjb2xvchgBIAEoCRINCgV3aWR0aBgCIAEoCRINCgVzdHlsZRgDIAEoCSKbAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEwoLZm9udF9mYW1pbHkYASADKAkSEQoJZm9udF9zaXplGAIgASgJEhMKC2ZvbnRfd2VpZ2h0GAMgASgFEhMKC2xpbmVfaGVpZ2h0GAQgASgBEhYKDmxldHRlcl9zcGFjaW5nGAUgASgJEhYKDnRleHRfdHJhbnNmb3JtGAYgASgJIkQKFkdldERlc2lnblRva2Vuc1JlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJEChdHZXREZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiRgoZVXBkYXRlRGVzaWduVG9rZW5zUmVxdWVzdBIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRwoaVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIhwKGlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0In4KG1B1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHgocVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJKCh1VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiJQojR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QiUQokR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyI3CiFDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1JlcXVlc3QSEgoKdG9rZW5fcGF0aBgBIAEoCSJTCiJDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1Jlc3BvbnNlEhcKD3BhcmFncmFwaF9jb3VudBgBIAEoBRIUCgxyZWNvcmRfY291bnQYAiABKAUi2QIKEkRlc2lnblRva2VuVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBkZXNpZ25fdG9rZW5zX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkimAEKHkxpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKvAQofTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRIxCgh2ZXJzaW9ucxgBIAMoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ibgogUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIoQBCiFSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKC25ld192ZXJzaW9uGAIgASgLMh8uc2V0dGluZ3MudjEuRGVzaWduVG9rZW5WZXJzaW9uIkUKF0dldFByb2plY3RTY2hlbWFSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiZQoSUHJvamVjdFNjaGVtYU1vZGVsEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2ZpZWxkc19qc29uGAQgASgJEhMKC2NvbmZpZ19qc29uGAUgASgJIsIBCh1Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIdChBzb3VyY2VfbW9kZWxfa2V5GAQgASgJSACIAQESHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAUgASgJSAGIAQESDgoGdmFsdWVzGAYgAygJQhMKEV9zb3VyY2VfbW9kZWxfa2V5QhUKE19kZWZhdWx0X3JlY29yZF9rZXkijgEKGVByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSDAoEdHlwZRgDIAEoCRIPCgdlbmFibGVkGAQgASgIEiwKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIJCgdfY29uZmlnIp8DChZQcm9qZWN0U2NoZW1hT3BlcmF0aW9uEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhAKCGVuZHBvaW50GAMgASgJEhIKCnRpbWVvdXRfbXMYBCABKAUSMgoMaW5wdXRfc2NoZW1hGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEjMKDW91dHB1dF9zY2hlbWEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFgoOc3VwcG9ydHNfYXN5bmMYByABKAgSDAoEa2luZBgIIAEoCRIeChFhdHRhY2hlZF90b19tb2RlbBgJIAEoCUgCiAEBEhUKDXBhcmVudF9maWVsZHMYCiADKAkSMwoNY2FjaGVfY29udHJvbBgLIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBAUIPCg1faW5wdXRfc2NoZW1hQhAKDl9vdXRwdXRfc2NoZW1hQhQKEl9hdHRhY2hlZF90b19tb2RlbEIQCg5fY2FjaGVfY29udHJvbCJEChRQcm9qZWN0U2NoZW1hU2VnbWVudBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpc19hY3RpdmUYAyABKAgihgUKGEdldFByb2plY3RTY2hlbWFSZXNwb25zZRIvCgZtb2RlbHMYASADKAsyHy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hTW9kZWwSPgoKZGltZW5zaW9ucxgCIAMoCzIqLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEj4KDmF1dGhfcHJvdmlkZXJzGAMgAygLMiYuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchI3CgpvcGVyYXRpb25zGAQgAygLMiMuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU9wZXJhdGlvbhIzCghzZWdtZW50cxgFIAMoCzIhLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFTZWdtZW50EiYKGWN1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWQYCCABKAhIAIgBARIhChRjdXN0b21lcl9vdHBfZW5hYmxlZBgJIAEoCEgBiAEBEhoKEnZhcmlhbnRfZGltZW5zaW9ucxgKIAMoCRIlChhub3RlX3NjcmVlbnNob3RzX2VuYWJsZWQYCyABKAhIAogBARIkChdhbm9ueW1vdXNfbm90ZXNfZW5hYmxlZBgMIAEoCEgDiAEBQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZEIbChlfbm90ZV9zY3JlZW5zaG90c19lbmFibGVkQhoKGF9hbm9ueW1vdXNfbm90ZXNfZW5hYmxlZEoECAYQB0oECAcQCFILZXhwZXJpbWVudHNSDnByb2ZpbGVfc2NoZW1hIiwKHlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSKJAQofUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIi4KIFVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlUKIVVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjUKJ0dldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJVCihHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLiAgoXQ29udGV4dERpbWVuc2lvblZlcnNpb24SCgoCaWQYASABKAkSHAoUY29udGV4dF9kaW1lbnNpb25faWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSK7AQojTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QSHAoUY29udGV4dF9kaW1lbnNpb25faWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiuQEKJExpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXNwb25zZRI2Cgh2ZXJzaW9ucxgBIAMoCzIkLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJzCiVSZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKVAQomUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbhI5CgtuZXdfdmVyc2lvbhgCIAEoCzIkLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WZXJzaW9uIh0KG1B1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdCL0AQocUHVibGlzaFByb2plY3RTY2hlbWFSZXNwb25zZRIYChBtb2RlbHNfcHVibGlzaGVkGAEgASgFEhwKFG9wZXJhdGlvbnNfcHVibGlzaGVkGAIgASgFEiQKHGNvbnRleHRfZGltZW5zaW9uc19wdWJsaXNoZWQYAyABKAUSIAoYYXV0aF9wcm92aWRlcnNfcHVibGlzaGVkGAQgASgFEjQKEGJyZWFraW5nX2NoYW5nZXMYBiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlSgQIBRAGUhhwcm9maWxlX3NjaGVtYV9wdWJsaXNoZWQiIAoeR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXF1ZXN0IoMBCh9HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1Jlc3BvbnNlEioKB3BlbmRpbmcYASADKAsyGS5wdWJsaXNoLnYxLlBlbmRpbmdFbnRpdHkSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UirAEKJlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0IlsKJ1NjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjsKLUNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJiCi5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24qiwEKDUNoYW5uZWxQb2xpY3kSHgoaQ0hBTk5FTF9QT0xJQ1lfVU5TUEVDSUZJRUQQABIdChlDSEFOTkVMX1BPTElDWV9ERUZBVUxUX09OEAESHgoaQ0hBTk5FTF9QT0xJQ1lfREVGQVVMVF9PRkYQAhIbChdDSEFOTkVMX1BPTElDWV9SRVFVSVJFRBADMvM2Cg9TZXR0aW5nc1NlcnZpY2USVgoNTGlzdEF1ZGl0TG9ncxIhLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXF1ZXN0GiIuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEk0KCkNyZWF0ZU5vdGUSHi5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXNwb25zZRJECgdHZXROb3RlEhsuc2V0dGluZ3MudjEuR2V0Tm90ZVJlcXVlc3QaHC5zZXR0aW5ncy52MS5HZXROb3RlUmVzcG9uc2USSgoJTGlzdE5vdGVzEh0uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVxdWVzdBoeLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1Jlc3BvbnNlEk0KClVwZGF0ZU5vdGUSHi5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXNwb25zZRJNCgpEZWxldGVOb3RlEh4uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVzcG9uc2USUAoLU2VhcmNoTm90ZXMSHy5zZXR0aW5ncy52MS5TZWFyY2hOb3Rlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5TZWFyY2hOb3Rlc1Jlc3BvbnNlEmUKEkNyZWF0ZU5vdGVBcHByb3ZhbBImLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVBcHByb3ZhbFJlcXVlc3QaJy5zZXR0aW5ncy52MS5DcmVhdGVOb3RlQXBwcm92YWxSZXNwb25zZRJiChFMaXN0Tm90ZUFwcHJvdmFscxIlLnNldHRpbmdzLnYxLkxpc3ROb3RlQXBwcm92YWxzUmVxdWVzdBomLnNldHRpbmdzLnYxLkxpc3ROb3RlQXBwcm92YWxzUmVzcG9uc2USZQoSRGVjaWRlTm90ZUFwcHJvdmFsEiYuc2V0dGluZ3MudjEuRGVjaWRlTm90ZUFwcHJvdmFsUmVxdWVzdBonLnNldHRpbmdzLnYxLkRlY2lkZU5vdGVBcHByb3ZhbFJlc3BvbnNlEmIKEUNyZWF0ZU5vdGVIYW5kb2ZmEiUuc2V0dGluZ3MudjEuQ3JlYXRlTm90ZUhhbmRvZmZSZXF1ZXN0GiYuc2V0dGluZ3MudjEuQ3JlYXRlTm90ZUhhbmRvZmZSZXNwb25zZRJrChRHZXROb3RlSGFuZG9mZlN0YXR1cxIoLnNldHRpbmdzLnYxLkdldE5vdGVIYW5kb2ZmU3RhdHVzUmVxdWVzdBopLnNldHRpbmdzLnYxLkdldE5vdGVIYW5kb2ZmU3RhdHVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJiChFTZXRNZW50aW9uRHVlRGF0ZRIlLnNldHRpbmdzLnYxLlNldE1lbnRpb25EdWVEYXRlUmVxdWVzdBomLnNldHRpbmdzLnYxLlNldE1lbnRpb25EdWVEYXRlUmVzcG9uc2USUAoLTGlzdExvY2FsZXMSHy5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1Jlc3BvbnNlEkoKCUdldExvY2FsZRIdLnNldHRpbmdzLnYxLkdldExvY2FsZVJlcXVlc3QaHi5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXNwb25zZRJfChBHZXREZWZhdWx0TG9jYWxlEiQuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USXAoPR2V0TG9jYWxlQnlDb2RlEiMuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlc3BvbnNlElMKDENyZWF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXNwb25zZRJTCgxVcGRhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVzcG9uc2USUwoMRGVsZXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlc3BvbnNlEn0KGkxpc3ROb3RpZmljYXRpb25DYXRlZ29yaWVzEi4uc2V0dGluZ3MudjEuTGlzdE5vdGlmaWNhdGlvbkNhdGVnb3JpZXNSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuTGlzdE5vdGlmaWNhdGlvbkNhdGVnb3JpZXNSZXNwb25zZRJ0ChdHZXROb3RpZmljYXRpb25DYXRlZ29yeRIrLnNldHRpbmdzLnYxLkdldE5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBosLnNldHRpbmdzLnYxLkdldE5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USfQoaQ3JlYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnkSLi5zZXR0aW5ncy52MS5DcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlcXVlc3QaLy5zZXR0aW5ncy52MS5DcmVhdGVOb3RpZmljYXRpb25DYXRlZ29yeVJlc3BvbnNlEn0KGlVwZGF0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5Ei4uc2V0dGluZ3MudjEuVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXF1ZXN0Gi8uc2V0dGluZ3MudjEuVXBkYXRlTm90aWZpY2F0aW9uQ2F0ZWdvcnlSZXNwb25zZRJ9ChpEZWxldGVOb3RpZmljYXRpb25DYXRlZ29yeRIuLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVxdWVzdBovLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbkNhdGVnb3J5UmVzcG9uc2USXAoPR2V0TG9jYWxlQ2hhaW5zEiMuc2V0dGluZ3MudjEuR2V0TG9jYWxlQ2hhaW5zUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldExvY2FsZUNoYWluc1Jlc3BvbnNlEmIKEUdldE5hdlByZWZlcmVuY2VzEiUuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0GiYuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRJrChRVcGRhdGVOYXZQcmVmZXJlbmNlcxIoLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVxdWVzdBopLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USZQoSTGlzdFJlY2VudGx5T3BlbmVkEiYuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE1RyYWNrUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXNwb25zZRJrChRSZW1vdmVSZWNlbnRseU9wZW5lZBIoLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVxdWVzdBopLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTQ2xlYXJSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEm4KFUxpc3RDb250ZXh0RGltZW5zaW9ucxIpLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXNwb25zZRJoChNHZXRDb250ZXh0RGltZW5zaW9uEicuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QaKC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWQ3JlYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFlVwZGF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZEZWxldGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USegoZR2V0Q29udGV4dERpbWVuc2lvblZhbHVlcxItLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1Jlc3BvbnNlEl8KEEdldEVkaXRvckNvbmZpZ3MSJC5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXNwb25zZRJlChJMaXN0VmFyaWFudENhdGFsb2cSJi5zZXR0aW5ncy52MS5MaXN0VmFyaWFudENhdGFsb2dSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVzcG9uc2UScQoWR2V0VmFyaWFudENhdGFsb2dFbnRyeRIqLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gisuc2V0dGluZ3MudjEuR2V0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGUNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkNyZWF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5VcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuRGVsZXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEmUKEkdldFJlc29sdXRpb25TdGF0cxImLnNldHRpbmdzLnYxLkdldFJlc29sdXRpb25TdGF0c1JlcXVlc3QaJy5zZXR0aW5ncy52MS5HZXRSZXNvbHV0aW9uU3RhdHNSZXNwb25zZRJfChBHZXRQcm9qZWN0U2NoZW1hEiQuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USdAoXUHVibGlzaENvbnRleHREaW1lbnNpb24SKy5zZXR0aW5ncy52MS5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLC5zZXR0aW5ncy52MS5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGVVucHVibGlzaENvbnRleHREaW1lbnNpb24SLS5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBouLnNldHRpbmdzLnYxLlVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRKPAQogR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXMSNC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QaNS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1Jlc3BvbnNlEowBCh9TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoEjMuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QaNC5zZXR0aW5ncy52MS5TY2hlZHVsZUNvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USoQEKJkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoEjouc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0Gjsuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRKDAQocTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9ucxIwLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1Jlc3BvbnNlEokBCh5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb24SMi5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXF1ZXN0GjMuc2V0dGluZ3MudjEuUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVzcG9uc2USdAoXR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXMSKy5zZXR0aW5ncy52MS5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QaLC5zZXR0aW5ncy52MS5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1Jlc3BvbnNlEmsKFFB1Ymxpc2hQcm9qZWN0U2NoZW1hEiguc2V0dGluZ3MudjEuUHVibGlzaFByb2plY3RTY2hlbWFSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUHVibGlzaFByb2plY3RTY2hlbWFSZXNwb25zZRJcCg9HZXREZXNpZ25Ub2tlbnMSIy5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USZQoSVXBkYXRlRGVzaWduVG9rZW5zEiYuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVxdWVzdBonLnNldHRpbmdzLnYxLlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEmgKE1B1Ymxpc2hEZXNpZ25Ub2tlbnMSJy5zZXR0aW5ncy52MS5QdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdBooLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRJuChVVbnB1Ymxpc2hEZXNpZ25Ub2tlbnMSKS5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giouc2V0dGluZ3MudjEuVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USgwEKHEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXMSMC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNQdWJsaXNoU3RhdHVzUmVxdWVzdBoxLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USdAoXTGlzdERlc2lnblRva2VuVmVyc2lvbnMSKy5zZXR0aW5ncy52MS5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QaLC5zZXR0aW5ncy52MS5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1Jlc3BvbnNlEnoKGVJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb24SLS5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBouLnNldHRpbmdzLnYxLlJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXNwb25zZUI9WjtnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vc2V0dGluZ3MvdjE7c2V0dGluZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination]);
1044
1066
  var NoteSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 1);
1045
- var ListAuditLogsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 2);
1046
- var CreateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 4);
1047
- var GetNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 6);
1048
- var ListNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 8);
1049
- var UpdateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 10);
1050
- var DeleteNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 12);
1051
- var ListMyMentionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 17);
1052
- var UpdateMentionStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 19);
1053
- var LocaleSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 21);
1054
- var ListLocalesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 22);
1055
- var GetLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 24);
1056
- var CreateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 26);
1057
- var UpdateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 28);
1058
- var DeleteLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 30);
1059
- var ListNotificationCategoriesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 33);
1060
- var GetNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 35);
1061
- var CreateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 37);
1062
- var UpdateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 39);
1063
- var DeleteNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 41);
1064
- var GetLocaleChainsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 46);
1065
- var GetNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 49);
1066
- var UpdateNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 51);
1067
- var ListRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 54);
1068
- var TrackRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 56);
1069
- var RemoveRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 58);
1070
- var ClearRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 60);
1071
- var ContextDimensionSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 62);
1072
- var ListContextDimensionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 64);
1073
- var GetContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 66);
1074
- var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 68);
1075
- var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 70);
1076
- var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 72);
1077
- var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 74);
1078
- var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 76);
1079
- var ListVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 77);
1080
- var GetVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 79);
1081
- var CreateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 81);
1082
- var UpdateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 83);
1083
- var DeleteVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 85);
1084
- var GetResolutionStatsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 87);
1085
- var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 97);
1086
- var SearchNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
1087
- var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 102);
1088
- var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 104);
1089
- var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 119);
1090
- var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 121);
1091
- var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 123);
1092
- var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 125);
1093
- var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 127);
1094
- var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 129);
1095
- var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 132);
1096
- var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 134);
1097
- var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 143);
1098
- var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 145);
1099
- var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 147);
1100
- var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 150);
1101
- var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 152);
1102
- var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 154);
1103
- var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 156);
1104
- var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 158);
1105
- var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 160);
1067
+ var ListAuditLogsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 3);
1068
+ var CreateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 5);
1069
+ var GetNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 7);
1070
+ var ListNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 9);
1071
+ var UpdateNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 11);
1072
+ var DeleteNoteRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 13);
1073
+ var ListMyMentionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 18);
1074
+ var UpdateMentionStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 20);
1075
+ var SetMentionDueDateRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 22);
1076
+ var LocaleSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 24);
1077
+ var ListLocalesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 25);
1078
+ var GetLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 27);
1079
+ var CreateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 29);
1080
+ var UpdateLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 31);
1081
+ var DeleteLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 33);
1082
+ var ListNotificationCategoriesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 36);
1083
+ var GetNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 38);
1084
+ var CreateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 40);
1085
+ var UpdateNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 42);
1086
+ var DeleteNotificationCategoryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 44);
1087
+ var GetLocaleChainsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 49);
1088
+ var GetNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 52);
1089
+ var UpdateNavPreferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 54);
1090
+ var ListRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 57);
1091
+ var TrackRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 59);
1092
+ var RemoveRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 61);
1093
+ var ClearRecentlyOpenedRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 63);
1094
+ var ContextDimensionSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 65);
1095
+ var ListContextDimensionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 67);
1096
+ var GetContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 69);
1097
+ var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 71);
1098
+ var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 73);
1099
+ var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 75);
1100
+ var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 77);
1101
+ var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 79);
1102
+ var ListVariantCatalogRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 80);
1103
+ var GetVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 82);
1104
+ var CreateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 84);
1105
+ var UpdateVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 86);
1106
+ var DeleteVariantCatalogEntryRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 88);
1107
+ var GetResolutionStatsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 90);
1108
+ var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
1109
+ var CreateNoteApprovalRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 104);
1110
+ var ListNoteApprovalsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 106);
1111
+ var DecideNoteApprovalRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 108);
1112
+ var CreateNoteHandoffRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 110);
1113
+ var GetNoteHandoffStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 112);
1114
+ var SearchNotesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 114);
1115
+ var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 116);
1116
+ var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 118);
1117
+ var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 133);
1118
+ var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 135);
1119
+ var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 137);
1120
+ var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 139);
1121
+ var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 141);
1122
+ var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 143);
1123
+ var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 146);
1124
+ var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 148);
1125
+ var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 157);
1126
+ var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 159);
1127
+ var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 161);
1128
+ var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 164);
1129
+ var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 166);
1130
+ var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 168);
1131
+ var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 170);
1132
+ var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 172);
1133
+ var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 174);
1106
1134
  var SettingsService = /* @__PURE__ */ serviceDesc7(file_settings_v1_settings, 0);
1107
1135
 
1108
1136
  // ../../packages/proto-ts/src/storage/v1/storage_pb.js
@@ -1207,7 +1235,7 @@ var HooksService = /* @__PURE__ */ serviceDesc11(file_hooks_v1_hooks, 0);
1207
1235
  // ../../packages/proto-ts/src/notifications/v1/notifications_pb.js
1208
1236
  import { enumDesc as enumDesc13, fileDesc as fileDesc16, messageDesc as messageDesc16, serviceDesc as serviceDesc12, tsEnum as tsEnum13 } from "@bufbuild/protobuf/codegenv2";
1209
1237
  import { file_google_protobuf_struct as file_google_protobuf_struct10, file_google_protobuf_timestamp as file_google_protobuf_timestamp11 } from "@bufbuild/protobuf/wkt";
1210
- var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc16("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IuoBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFItQBChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCRIVCghjYXRlZ29yeRgGIAEoCUgDiAEBQgoKCF9tZXNzYWdlQg0KC19hY3Rpb25fdXJsQg4KDF90YXJnZXRfdHlwZUILCglfY2F0ZWdvcnkiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKBBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIWCglpbWFnZV91cmwYCiABKAlIBYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQgoKCF9tZXNzYWdlQgsKCV9jYXRlZ29yeUINCgtfYWN0aW9uX3VybEILCglfbWV0YWRhdGFCCgoIX3JlYWRfYXRCDAoKX2ltYWdlX3VybEINCgtfZXhwaXJlc19hdCL4AQogTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIBxAISgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0Ir0BCiFMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoYFCh9TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIVCghjYXRlZ29yeRgEIAEoCUgBiAEBEhcKCmFjdGlvbl91cmwYBSABKAlIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpbWFnZV91cmwYByABKAlIBIgBARIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBElEKCGNoYW5uZWxzGAkgAygLMj8ubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRKBAgKEAtKBAgLEAxKBAgMEA1KBAgNEA5KBAgUEBVKBAgVEBZKBAgWEBdKBAgXEBhSCWRlZXBfbGlua1IFYmFkZ2VSCXRocmVhZF9pZFIJcHVzaF9kYXRhUg1lbWFpbF9zdWJqZWN0UgplbWFpbF9ib2R5Ug5lbWFpbF9yZXBseV90b1IKZW1haWxfY3RhcyJgCiBTZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRI8Cgxub3RpZmljYXRpb24YASABKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uIoAECiNTZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBIUCgxjdXN0b21lcl9pZHMYASADKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESVQoIY2hhbm5lbHMYCSADKAsyQy5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXQiNQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIjEKI01hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKJE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlMKJ01hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBQg4KDF9jdXN0b21lcl9pZCI5CihNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIt0BChZOb3RpZmljYXRpb25QcmVmZXJlbmNlEhAKCGNhdGVnb3J5GAEgASgJEhUKDWVtYWlsX2VuYWJsZWQYAiABKAgSFAoMcHVzaF9lbmFibGVkGAMgASgIEhYKDmluX2FwcF9lbmFibGVkGAQgASgIEhQKDGVtYWlsX3NvdXJjZRgFIAEoCRIuCgp1cGRhdGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpwcm9qZWN0X2lkGAcgASgJSACIAQFCDQoLX3Byb2plY3RfaWQiOAohR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJImMKIkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USPQoLcHJlZmVyZW5jZXMYASADKAsyKC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2Ui1gEKI1VwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhoKDWVtYWlsX2VuYWJsZWQYAyABKAhIAIgBARIZCgxwdXNoX2VuYWJsZWQYBCABKAhIAYgBARIbCg5pbl9hcHBfZW5hYmxlZBgFIAEoCEgCiAEBQhAKDl9lbWFpbF9lbmFibGVkQg8KDV9wdXNoX2VuYWJsZWRCEQoPX2luX2FwcF9lbmFibGVkIjcKJFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIInwKGlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRva2VuGAIgASgJEhAKCHBsYXRmb3JtGAMgASgJEhgKC2RldmljZV9uYW1lGAQgASgJSACIAQFCDgoMX2RldmljZV9uYW1lIi4KG1JlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KHFVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAkiMAodVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLIAwoOUHVzaENyZWRlbnRpYWwSCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIWCglidW5kbGVfaWQYCiABKAlIAIgBARIZCgxhcG5zX3RlYW1faWQYCyABKAlIAYgBARIYCgthcG5zX2tleV9pZBgMIAEoCUgCiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgNIAEoCEgDiAEBEhsKDmZjbV9wcm9qZWN0X2lkGBQgASgJSASIAQESHQoQZmNtX2NsaWVudF9lbWFpbBgVIAEoCUgFiAEBEhIKCmhhc19zZWNyZXQYHiABKAgSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhEKD19mY21fcHJvamVjdF9pZEITChFfZmNtX2NsaWVudF9lbWFpbCLfAgobVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIcGxhdGZvcm0YAiABKAkSGAoLYXBuc19wOF9rZXkYCiABKAlIAIgBARIWCglidW5kbGVfaWQYCyABKAlIAYgBARIZCgxhcG5zX3RlYW1faWQYDCABKAlIAogBARIYCgthcG5zX2tleV9pZBgNIAEoCUgDiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgOIAEoCEgEiAEBEiUKGGZjbV9zZXJ2aWNlX2FjY291bnRfanNvbhgUIAEoCUgFiAEBQg4KDF9hcG5zX3A4X2tleUIMCgpfYnVuZGxlX2lkQg8KDV9hcG5zX3RlYW1faWRCDgoMX2FwbnNfa2V5X2lkQhIKEF9hcG5zX3Byb2R1Y3Rpb25CGwoZX2ZjbV9zZXJ2aWNlX2FjY291bnRfanNvbiJUChxVcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEjQKCmNyZWRlbnRpYWwYASABKAsyIC5ub3RpZmljYXRpb25zLnYxLlB1c2hDcmVkZW50aWFsIjAKGkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVAobTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEjUKC2NyZWRlbnRpYWxzGAEgAygLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIpChtEZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QSCgoCaWQYASABKAkiLwocRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhkKF0dldFdlYlB1c2hDb25maWdSZXF1ZXN0IjQKGEdldFdlYlB1c2hDb25maWdSZXNwb25zZRIYChB2YXBpZF9wdWJsaWNfa2V5GAEgASgJKsgCChBOb3RpZmljYXRpb25UeXBlEiEKHU5PVElGSUNBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1RZUEVfSk9CX0NPTVBMRVRFRBABEiAKHE5PVElGSUNBVElPTl9UWVBFX0pPQl9GQUlMRUQQAhIiCh5OT1RJRklDQVRJT05fVFlQRV9KT0JfUFJPR1JFU1MQAxIdChlOT1RJRklDQVRJT05fVFlQRV9NRU5USU9OEAQSIAocTk9USUZJQ0FUSU9OX1RZUEVfTk9URV9SRVBMWRAFEiMKH05PVElGSUNBVElPTl9UWVBFX05PVEVfUkVTT0xWRUQQBhIcChhOT1RJRklDQVRJT05fVFlQRV9TWVNURU0QBxIiCh5OT1RJRklDQVRJT05fVFlQRV9BTk5PVU5DRU1FTlQQCCr1AQoWTm90aWZpY2F0aW9uU291cmNlVHlwZRIoCiROT1RJRklDQVRJT05fU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfUkVDT1JEEAESIgoeTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX01PREVMEAISIQodTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX05PVEUQAxIgChxOT1RJRklDQVRJT05fU09VUkNFX1RZUEVfSk9CEAQSIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1NZU1RFTRAFMtwTChROb3RpZmljYXRpb25zU2VydmljZRJsChFMaXN0Tm90aWZpY2F0aW9ucxIqLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXF1ZXN0Gisubm90aWZpY2F0aW9ucy52MS5MaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEmMKDkdldFVucmVhZENvdW50Eicubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLkdldFVucmVhZENvdW50UmVzcG9uc2USdQoUTWFya05vdGlmaWNhdGlvblJlYWQSLS5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuTWFya05vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKBAQoYTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkEjEubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRJvChJEZWxldGVOb3RpZmljYXRpb24SKy5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlcXVlc3QaLC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlc3BvbnNlEmkKEFNlbmRBbm5vdW5jZW1lbnQSKS5ub3RpZmljYXRpb25zLnYxLlNlbmRBbm5vdW5jZW1lbnRSZXF1ZXN0Gioubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USfgoXTGlzdEFubm91bmNlbWVudEhpc3RvcnkSMC5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVxdWVzdBoxLm5vdGlmaWNhdGlvbnMudjEuTGlzdEFubm91bmNlbWVudEhpc3RvcnlSZXNwb25zZRKEAQoZTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9ucxIyLm5vdGlmaWNhdGlvbnMudjEuTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QaMy5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRKBAQoYU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uEjEubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvbhI1Lm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZBI1Lm5vdGlmaWNhdGlvbnMudjEuTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKZAQogTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWQSOS5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBo6Lm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRKHAQoaR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXMSMy5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBo0Lm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRKNAQocVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZRI1Lm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRJyChNSZWdpc3RlckRldmljZVRva2VuEiwubm90aWZpY2F0aW9ucy52MS5SZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEngKFVVucmVnaXN0ZXJEZXZpY2VUb2tlbhIuLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBovLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USaQoQR2V0V2ViUHVzaENvbmZpZxIpLm5vdGlmaWNhdGlvbnMudjEuR2V0V2ViUHVzaENvbmZpZ1JlcXVlc3QaKi5ub3RpZmljYXRpb25zLnYxLkdldFdlYlB1c2hDb25maWdSZXNwb25zZRJ1ChRVcGxvYWRQdXNoQ3JlZGVudGlhbBItLm5vdGlmaWNhdGlvbnMudjEuVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5VcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEnIKE0xpc3RQdXNoQ3JlZGVudGlhbHMSLC5ub3RpZmljYXRpb25zLnYxLkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0Gi0ubm90aWZpY2F0aW9ucy52MS5MaXN0UHVzaENyZWRlbnRpYWxzUmVzcG9uc2USdQoURGVsZXRlUHVzaENyZWRlbnRpYWwSLS5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZVB1c2hDcmVkZW50aWFsUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZUJHWkVnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vbm90aWZpY2F0aW9ucy92MTtub3RpZmljYXRpb25zdjFiBnByb3RvMw", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
1238
+ var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc16("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IuoBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0SgQIBhAHSgQIChALSgQICxAMUgVsaW1pdFIGb2Zmc2V0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIvYBChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCRIVCghjYXRlZ29yeRgGIAEoCUgDiAEBEhQKB2RyeV9ydW4YByABKAhIBIgBAUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGVCCwoJX2NhdGVnb3J5QgoKCF9kcnlfcnVuIooBChhTZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USNAoMbm90aWZpY2F0aW9uGAEgASgLMh4ubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb24SOAoIYXVkaWVuY2UYAiABKAsyJi5ub3RpZmljYXRpb25zLnYxLkFubm91bmNlbWVudEF1ZGllbmNlInkKFEFubm91bmNlbWVudEF1ZGllbmNlEhcKD3JlY2lwaWVudF9jb3VudBgBIAEoBRIXCg93b3Jrc3BhY2VfY291bnQYAiABKAUSGAoQc3VwcHJlc3NlZF9jb3VudBgDIAEoBRIVCg1zYW1wbGVfZW1haWxzGAQgAygJIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKnBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhYKCXJpY2hfYm9keRgWIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAUgASgJSAKIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgDiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIWCglpbWFnZV91cmwYCiABKAlIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBQgoKCF9tZXNzYWdlQgwKCl9yaWNoX2JvZHlCCwoJX2NhdGVnb3J5Qg0KC19hY3Rpb25fdXJsQgsKCV9tZXRhZGF0YUIKCghfcmVhZF9hdEIMCgpfaW1hZ2VfdXJsQg0KC19leHBpcmVzX2F0IvgBCiBMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3RKBAgGEAdKBAgHEAhKBAgKEAtKBAgLEAxSBWxpbWl0UgZvZmZzZXQivQEKIUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRI9Cg1ub3RpZmljYXRpb25zGAEgAygLMiYubm90aWZpY2F0aW9ucy52MS5DdXN0b21lck5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8igAYKH1NlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESUQoIY2hhbm5lbHMYCSADKAsyPy5ub3RpZmljYXRpb25zLnYxLlNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QuQ2hhbm5lbHNFbnRyeRIcCg9jb3B5X2FjdGlvbl9rZXkYDiABKAlIBogBARIWCglyaWNoX2JvZHkYDyABKAlIB4gBARIUCgdkcnlfcnVuGBAgASgISAiIAQEaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRCEgoQX2NvcHlfYWN0aW9uX2tleUIMCgpfcmljaF9ib2R5QgoKCF9kcnlfcnVuSgQIChALSgQICxAMSgQIDBANSgQIDRAOSgQIFBAVSgQIFRAWSgQIFhAXSgQIFxAYUglkZWVwX2xpbmtSBWJhZGdlUgl0aHJlYWRfaWRSCXB1c2hfZGF0YVINZW1haWxfc3ViamVjdFIKZW1haWxfYm9keVIOZW1haWxfcmVwbHlfdG9SCmVtYWlsX2N0YXMioAEKIFNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEjwKDG5vdGlmaWNhdGlvbhgBIAEoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SPgoHcHJldmlldxgCIAEoCzItLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uRGVsaXZlcnlQcmV2aWV3IpUBChtOb3RpZmljYXRpb25EZWxpdmVyeVByZXZpZXcSFwoPcmVjaXBpZW50X2NvdW50GAEgASgFEhMKC2VtYWlsX2NvdW50GAIgASgFEhIKCnB1c2hfY291bnQYAyABKAUSFAoMaW5fYXBwX2NvdW50GAQgASgFEh4KFmZ1bGx5X3N1cHByZXNzZWRfY291bnQYBSABKAUiogQKI1NlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhQKDGN1c3RvbWVyX2lkcxgBIAMoCRINCgV0aXRsZRgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQESFQoIY2F0ZWdvcnkYBCABKAlIAYgBARIXCgphY3Rpb25fdXJsGAUgASgJSAKIAQESLgoIbWV0YWRhdGEYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESFgoJaW1hZ2VfdXJsGAcgASgJSASIAQESMwoKZXhwaXJlc19hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARJVCghjaGFubmVscxgJIAMoCzJDLm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QuQ2hhbm5lbHNFbnRyeRIUCgdkcnlfcnVuGAogASgISAaIAQEaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRCCgoIX2RyeV9ydW4idQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFEj4KB3ByZXZpZXcYAiABKAsyLS5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkRlbGl2ZXJ5UHJldmlldyIxCiNNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSI3CiRNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJTCidNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiOQooTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRINCgVjb3VudBgBIAEoBSLdAQoWTm90aWZpY2F0aW9uUHJlZmVyZW5jZRIQCghjYXRlZ29yeRgBIAEoCRIVCg1lbWFpbF9lbmFibGVkGAIgASgIEhQKDHB1c2hfZW5hYmxlZBgDIAEoCBIWCg5pbl9hcHBfZW5hYmxlZBgEIAEoCBIUCgxlbWFpbF9zb3VyY2UYBSABKAkSLgoKdXBkYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKcHJvamVjdF9pZBgHIAEoCUgAiAEBQg0KC19wcm9qZWN0X2lkIjgKIUdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJjCiJHZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEj0KC3ByZWZlcmVuY2VzGAEgAygLMigubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlItYBCiNVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRIaCg1lbWFpbF9lbmFibGVkGAMgASgISACIAQESGQoMcHVzaF9lbmFibGVkGAQgASgISAGIAQESGwoOaW5fYXBwX2VuYWJsZWQYBSABKAhIAogBAUIQCg5fZW1haWxfZW5hYmxlZEIPCg1fcHVzaF9lbmFibGVkQhEKD19pbl9hcHBfZW5hYmxlZCI3CiRVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ8ChpSZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRINCgV0b2tlbhgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIYCgtkZXZpY2VfbmFtZRgEIAEoCUgAiAEBQg4KDF9kZXZpY2VfbmFtZSIuChtSZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChxVbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIjAKHVVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiyAMKDlB1c2hDcmVkZW50aWFsEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIcGxhdGZvcm0YAyABKAkSFgoJYnVuZGxlX2lkGAogASgJSACIAQESGQoMYXBuc190ZWFtX2lkGAsgASgJSAGIAQESGAoLYXBuc19rZXlfaWQYDCABKAlIAogBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDSABKAhIA4gBARIbCg5mY21fcHJvamVjdF9pZBgUIAEoCUgEiAEBEh0KEGZjbV9jbGllbnRfZW1haWwYFSABKAlIBYgBARISCgpoYXNfc2VjcmV0GB4gASgIEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9idW5kbGVfaWRCDwoNX2FwbnNfdGVhbV9pZEIOCgxfYXBuc19rZXlfaWRCEgoQX2FwbnNfcHJvZHVjdGlvbkIRCg9fZmNtX3Byb2plY3RfaWRCEwoRX2ZjbV9jbGllbnRfZW1haWwi3wIKG1VwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhAKCHBsYXRmb3JtGAIgASgJEhgKC2FwbnNfcDhfa2V5GAogASgJSACIAQESFgoJYnVuZGxlX2lkGAsgASgJSAGIAQESGQoMYXBuc190ZWFtX2lkGAwgASgJSAKIAQESGAoLYXBuc19rZXlfaWQYDSABKAlIA4gBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDiABKAhIBIgBARIlChhmY21fc2VydmljZV9hY2NvdW50X2pzb24YFCABKAlIBYgBAUIOCgxfYXBuc19wOF9rZXlCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhsKGV9mY21fc2VydmljZV9hY2NvdW50X2pzb24iVAocVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRI0CgpjcmVkZW50aWFsGAEgASgLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIwChpMaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlQKG0xpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRI1CgtjcmVkZW50aWFscxgBIAMoCzIgLm5vdGlmaWNhdGlvbnMudjEuUHVzaENyZWRlbnRpYWwiKQobRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHERlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIZChdHZXRXZWJQdXNoQ29uZmlnUmVxdWVzdCI0ChhHZXRXZWJQdXNoQ29uZmlnUmVzcG9uc2USGAoQdmFwaWRfcHVibGljX2tleRgBIAEoCSrIAgoQTm90aWZpY2F0aW9uVHlwZRIhCh1OT1RJRklDQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEiMKH05PVElGSUNBVElPTl9UWVBFX0pPQl9DT01QTEVURUQQARIgChxOT1RJRklDQVRJT05fVFlQRV9KT0JfRkFJTEVEEAISIgoeTk9USUZJQ0FUSU9OX1RZUEVfSk9CX1BST0dSRVNTEAMSHQoZTk9USUZJQ0FUSU9OX1RZUEVfTUVOVElPThAEEiAKHE5PVElGSUNBVElPTl9UWVBFX05PVEVfUkVQTFkQBRIjCh9OT1RJRklDQVRJT05fVFlQRV9OT1RFX1JFU09MVkVEEAYSHAoYTk9USUZJQ0FUSU9OX1RZUEVfU1lTVEVNEAcSIgoeTk9USUZJQ0FUSU9OX1RZUEVfQU5OT1VOQ0VNRU5UEAgq9QEKFk5vdGlmaWNhdGlvblNvdXJjZVR5cGUSKAokTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1JFQ09SRBABEiIKHk5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9NT0RFTBACEiEKHU5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9OT1RFEAMSIAocTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX0pPQhAEEiMKH05PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9TWVNURU0QBTLcEwoUTm90aWZpY2F0aW9uc1NlcnZpY2USbAoRTGlzdE5vdGlmaWNhdGlvbnMSKi5ub3RpZmljYXRpb25zLnYxLkxpc3ROb3RpZmljYXRpb25zUmVxdWVzdBorLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXNwb25zZRJjCg5HZXRVbnJlYWRDb3VudBInLm5vdGlmaWNhdGlvbnMudjEuR2V0VW5yZWFkQ291bnRSZXF1ZXN0Gigubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlc3BvbnNlEnUKFE1hcmtOb3RpZmljYXRpb25SZWFkEi0ubm90aWZpY2F0aW9ucy52MS5NYXJrTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USgQEKGE1hcmtBbGxOb3RpZmljYXRpb25zUmVhZBIxLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USbwoSRGVsZXRlTm90aWZpY2F0aW9uEisubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXF1ZXN0Giwubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRJpChBTZW5kQW5ub3VuY2VtZW50Eikubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVxdWVzdBoqLm5vdGlmaWNhdGlvbnMudjEuU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEn4KF0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5EjAubm90aWZpY2F0aW9ucy52MS5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QaMS5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2UShAEKGUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnMSMi5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXF1ZXN0GjMubm90aWZpY2F0aW9ucy52MS5MaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USgQEKGFNlbmRDdXN0b21lck5vdGlmaWNhdGlvbhIxLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHFNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb24SNS5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5TZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWQSNS5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5NYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USmQEKIE1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkEjkubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QaOi5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2UShwEKGkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzEjMubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1JlcXVlc3QaNC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USjQEKHFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2USNS5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2UScgoTUmVnaXN0ZXJEZXZpY2VUb2tlbhIsLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRJ4ChVVbnJlZ2lzdGVyRGV2aWNlVG9rZW4SLi5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLy5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEmkKEEdldFdlYlB1c2hDb25maWcSKS5ub3RpZmljYXRpb25zLnYxLkdldFdlYlB1c2hDb25maWdSZXF1ZXN0Gioubm90aWZpY2F0aW9ucy52MS5HZXRXZWJQdXNoQ29uZmlnUmVzcG9uc2USdQoUVXBsb2FkUHVzaENyZWRlbnRpYWwSLS5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRJyChNMaXN0UHVzaENyZWRlbnRpYWxzEiwubm90aWZpY2F0aW9ucy52MS5MaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEnUKFERlbGV0ZVB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2VCR1pFZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL25vdGlmaWNhdGlvbnMvdjE7bm90aWZpY2F0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
1211
1239
  var NotificationSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 0);
1212
1240
  var ListNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 1);
1213
1241
  var MarkNotificationReadRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 3);
@@ -1215,18 +1243,18 @@ var MarkAllNotificationsReadRequestSchema = /* @__PURE__ */ messageDesc16(file_n
1215
1243
  var DeleteNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 7);
1216
1244
  var GetUnreadCountRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 9);
1217
1245
  var SendAnnouncementRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 11);
1218
- var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 13);
1219
- var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 16);
1220
- var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 18);
1221
- var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 20);
1222
- var GetNotificationPreferencesRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 27);
1223
- var UpdateNotificationPreferenceRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 29);
1224
- var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 31);
1225
- var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 33);
1226
- var PushCredentialSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 35);
1227
- var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 36);
1228
- var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 38);
1229
- var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 40);
1246
+ var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 14);
1247
+ var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 17);
1248
+ var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 19);
1249
+ var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 22);
1250
+ var GetNotificationPreferencesRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 29);
1251
+ var UpdateNotificationPreferenceRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 31);
1252
+ var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 33);
1253
+ var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 35);
1254
+ var PushCredentialSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 37);
1255
+ var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 38);
1256
+ var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 40);
1257
+ var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc16(file_notifications_v1_notifications, 42);
1230
1258
  var NotificationTypeSchema = /* @__PURE__ */ enumDesc13(file_notifications_v1_notifications, 0);
1231
1259
  var NotificationType = /* @__PURE__ */ tsEnum13(NotificationTypeSchema);
1232
1260
  var NotificationsService = /* @__PURE__ */ serviceDesc12(file_notifications_v1_notifications, 0);
@@ -1761,7 +1789,8 @@ function createIdentityMethods(client) {
1761
1789
  create(UpdateCustomerRequestSchema, {
1762
1790
  id: params.id,
1763
1791
  email: params.email,
1764
- status: params.status
1792
+ status: params.status,
1793
+ preferredLocale: params.preferredLocale
1765
1794
  })
1766
1795
  );
1767
1796
  return {
@@ -1932,7 +1961,9 @@ function createIdentityMethods(client) {
1932
1961
  signupMode: params.signupMode,
1933
1962
  signupRestrictions: params.signupRestrictions,
1934
1963
  customerPasswordEnabled: params.customerPasswordEnabled,
1935
- customerOtpEnabled: params.customerOtpEnabled
1964
+ customerOtpEnabled: params.customerOtpEnabled,
1965
+ noteScreenshotsEnabled: params.noteScreenshotsEnabled,
1966
+ anonymousNotesEnabled: params.anonymousNotesEnabled
1936
1967
  })
1937
1968
  );
1938
1969
  return { project: resp.project ?? null };
@@ -1963,7 +1994,9 @@ function createIdentityMethods(client) {
1963
1994
  signupMode: params.signupMode,
1964
1995
  signupRestrictions: params.signupRestrictions,
1965
1996
  customerPasswordEnabled: params.customerPasswordEnabled,
1966
- customerOtpEnabled: params.customerOtpEnabled
1997
+ customerOtpEnabled: params.customerOtpEnabled,
1998
+ noteScreenshotsEnabled: params.noteScreenshotsEnabled,
1999
+ anonymousNotesEnabled: params.anonymousNotesEnabled
1967
2000
  })
1968
2001
  );
1969
2002
  return resp.project ?? null;
@@ -2040,13 +2073,31 @@ function createIdentityMethods(client) {
2040
2073
  );
2041
2074
  return { items: resp.items ?? [], total: Number(resp.total ?? 0) };
2042
2075
  },
2043
- // EID-388: set or clear a tenant's project-limit override. The backend RPC
2044
- // is exposed here for completeness (maps both request fields).
2076
+ // The staff circuit breaker over anonymous note submission, per tenant.
2077
+ // Deliberately NOT the per-project opt-in: the project flag decides whether
2078
+ // the public mutation exists (through a cached schema build); this is read
2079
+ // on the platform write path on every anonymous submission, so false stops
2080
+ // the writes immediately, whatever each project's own opt-in says.
2081
+ async setTenantAnonymousNotesEnabled(params) {
2082
+ return client.setTenantAnonymousNotesEnabled(
2083
+ create(SetTenantAnonymousNotesEnabledRequestSchema, {
2084
+ tenantId: params.tenantId,
2085
+ enabled: params.enabled
2086
+ })
2087
+ );
2088
+ },
2089
+ // EID-388: set or clear a tenant's project-limit override — the CEILING on
2090
+ // how many projects the tenant may create. The band top (TTS-1109) rides
2091
+ // with it: usage between the plan's included and the band bills at the
2092
+ // plan's per-project price, and everything above is a recorded free grant.
2093
+ // Unset band = the plan's own band bills, which is what every override
2094
+ // predating the field did.
2045
2095
  async setTenantProjectLimitOverride(params) {
2046
2096
  return client.setTenantProjectLimitOverride(
2047
2097
  create(SetTenantProjectLimitOverrideRequestSchema, {
2048
2098
  tenantId: params.tenantId,
2049
- projectLimitOverride: params.projectLimitOverride
2099
+ projectLimitOverride: params.projectLimitOverride,
2100
+ projectLimitOverrideBandMax: params.projectLimitOverrideBandMax
2050
2101
  })
2051
2102
  );
2052
2103
  },
@@ -2496,7 +2547,8 @@ function createIdentityMethods(client) {
2496
2547
  create(MintMcpWorkingTokenRequestSchema, {
2497
2548
  tenantId: params.tenantId,
2498
2549
  projectId: params.projectId,
2499
- readOnly: params.readOnly
2550
+ readOnly: params.readOnly,
2551
+ surface: params.surface
2500
2552
  })
2501
2553
  );
2502
2554
  return {
@@ -2608,7 +2660,8 @@ function createIdentityMethods(client) {
2608
2660
  create(UpdateMyProfileRequestSchema, {
2609
2661
  firstName: params.firstName,
2610
2662
  lastName: params.lastName,
2611
- avatarUrl: params.avatarUrl
2663
+ avatarUrl: params.avatarUrl,
2664
+ preferredLocale: params.preferredLocale
2612
2665
  })
2613
2666
  );
2614
2667
  return resp.user ?? null;
@@ -2807,7 +2860,8 @@ function createIdentityMethods(client) {
2807
2860
  relyingPartyId: params.relyingPartyId ?? "",
2808
2861
  projectId: params.projectId ?? "",
2809
2862
  hostname: params.hostname,
2810
- kind: params.kind ?? ""
2863
+ kind: params.kind ?? "",
2864
+ appTarget: params.appTarget ?? ""
2811
2865
  })
2812
2866
  );
2813
2867
  return resp.customDomain ?? null;
@@ -3318,6 +3372,11 @@ function jsFieldToProto(f) {
3318
3372
  // platform rejects sort by an unqueryable field. Without this the schema
3319
3373
  // editor's "Indexed for filtering & sorting" toggle silently no-ops.
3320
3374
  queryable: f.queryable,
3375
+ // Tri-state semantic-search flag: pass through verbatim. undefined leaves
3376
+ // the optional proto field unset (⇒ the platform applies the type-derived
3377
+ // default: on for prose types, off otherwise); an explicit false is a real
3378
+ // override and must survive the trip, so no `|| undefined` collapsing.
3379
+ embed: f.embed,
3321
3380
  helpText: f.helpText,
3322
3381
  placeholder: f.placeholder,
3323
3382
  defaultValue: f.defaultValue !== void 0 ? fromJson(ValueSchema, f.defaultValue) : void 0,
@@ -3336,6 +3395,8 @@ function jsConfigToProto(c) {
3336
3395
  versioning: c.versioning ?? false,
3337
3396
  publishing: c.publishing ?? false,
3338
3397
  variants: c.variants ?? false,
3398
+ embeddings: c.embeddings ?? false,
3399
+ hierarchy: c.hierarchy ?? false,
3339
3400
  inline: c.inline ?? false,
3340
3401
  singleton: c.singleton ?? false,
3341
3402
  access: c.access ? create3(AccessConfigSchema, {
@@ -3443,6 +3504,7 @@ function createModelsMethods(client) {
3443
3504
  if (params.layers?.length) where.ownerKind = { in: params.layers };
3444
3505
  if (params.layerOwnerId) where.layerOwnerId = { eq: params.layerOwnerId };
3445
3506
  if (params.search) where.name = { contains: params.search };
3507
+ if (params.key) where.key = { eq: params.key };
3446
3508
  const resp = await client.listModelDefinitions(
3447
3509
  create3(ListModelDefinitionsRequestSchema, {
3448
3510
  where: Object.keys(where).length > 0 ? where : void 0,
@@ -4214,11 +4276,14 @@ function createRecordsMethods(client) {
4214
4276
  );
4215
4277
  return resp.embeddings ?? [];
4216
4278
  },
4279
+ // customerId and context confine the hits, exactly as on searchEmbeddings.
4217
4280
  async findSimilarRecords(params) {
4218
4281
  const resp = await client.findSimilarRecords(
4219
4282
  create4(FindSimilarRecordsRequestSchema, {
4220
4283
  recordId: params.recordId,
4221
4284
  modelKey: params.modelKey,
4285
+ customerId: params.customerId,
4286
+ context: params.context,
4222
4287
  first: params.first ?? 10,
4223
4288
  after: params.after,
4224
4289
  last: params.last,
@@ -4247,11 +4312,25 @@ function createRecordsMethods(client) {
4247
4312
  );
4248
4313
  return resp.success;
4249
4314
  },
4315
+ // queryText is the alternative to queryVector: the platform embeds the text
4316
+ // with the project's own active provider and model, which is the same pair
4317
+ // the read path filters slots to, so a text query cannot mix scores from two
4318
+ // embedders in one ranking.
4319
+ //
4320
+ // customerId and context are the confinement inputs, in the shape
4321
+ // batchResolveRecords already takes. They are consumed ON the platform
4322
+ // (TTS-1146) — hits are resolved, confined to the caller's reach and their
4323
+ // variant selections, and aggregated before they leave SearchEmbeddings —
4324
+ // so a wrapper that dropped them would silently widen the result set rather
4325
+ // than fail.
4250
4326
  async searchEmbeddings(params) {
4251
4327
  const resp = await client.searchEmbeddings(
4252
4328
  create4(SearchEmbeddingsRequestSchema, {
4253
4329
  queryVector: params.queryVector,
4330
+ queryText: params.queryText,
4254
4331
  modelKey: params.modelKey,
4332
+ customerId: params.customerId,
4333
+ context: params.context,
4255
4334
  first: params.first ?? 10,
4256
4335
  after: params.after,
4257
4336
  last: params.last,
@@ -4359,6 +4438,25 @@ function createRecordsMethods(client) {
4359
4438
  cursors: resp.cursors ?? []
4360
4439
  };
4361
4440
  },
4441
+ // RecordsLocaleCoverage counts, per configured locale, the live records
4442
+ // carrying no value for it — the whole project in one call, where
4443
+ // recordsMissingLocale answers for one model at a time.
4444
+ //
4445
+ // A locale absent from the result was not measured. It is deliberately not
4446
+ // defaulted to zero here: the caller has to be able to tell "nothing is
4447
+ // missing" (an explicit 0 the server sends) from "this was not counted".
4448
+ async recordsLocaleCoverage() {
4449
+ const resp = await client.recordsLocaleCoverage(
4450
+ create4(RecordsLocaleCoverageRequestSchema, {})
4451
+ );
4452
+ return {
4453
+ locales: (resp.locales ?? []).map((c) => ({
4454
+ locale: c.locale,
4455
+ missingCount: c.missingCount
4456
+ })),
4457
+ totalRecords: resp.totalRecords
4458
+ };
4459
+ },
4362
4460
  // BackfillRecordGeometry walks every record of a model and (re)materializes
4363
4461
  // its geopoint fields into record_geometry (the geo analog of
4364
4462
  // BackfillQueryableIndex). Idempotent; returns the count of records indexed.
@@ -4514,6 +4612,11 @@ function createBillingMethods(client) {
4514
4612
  );
4515
4613
  return {
4516
4614
  items: resp.plans ?? [],
4615
+ // The metrics a plan limit may be set on, from the server rather than a
4616
+ // second copy in the editor. The editor's own copy had drifted to 7 of
4617
+ // 13 and lost content_resolutions, the metric that freezes a
4618
+ // workspace's content (TTS-1460).
4619
+ planMetrics: resp.planMetrics ?? [],
4517
4620
  total: resp.total,
4518
4621
  pageInfo: toPageInfo(resp.pageInfo)
4519
4622
  };
@@ -4728,6 +4831,47 @@ function createBillingMethods(client) {
4728
4831
  })
4729
4832
  );
4730
4833
  },
4834
+ // ── Entitlements (TTS-1480) ──────────────────────────────
4835
+ /**
4836
+ * The enforceable-feature registry the server holds
4837
+ * (services/internal/billing/features.go), in declaration order.
4838
+ *
4839
+ * The three staff screens that offer features — entitlements, rollout, and
4840
+ * the plan editor's Entitlements section — read this rather than a
4841
+ * hand-maintained copy, exactly as the plan editor reads
4842
+ * listBillingPlans().planMetrics. The copy they used to keep is the failure
4843
+ * this replaces: it lived in another repo with nothing keeping it in step,
4844
+ * and the metric list beside it had already drifted to 7 of 13.
4845
+ */
4846
+ async listFeatures() {
4847
+ const resp = await client.listFeatures(create5(ListFeaturesRequestSchema, {}));
4848
+ return resp.features;
4849
+ },
4850
+ /**
4851
+ * Resolve entitlements for a workspace: override → cohort/percentage
4852
+ * rollout → plan grant → off. Internal service plane, called by trusted Node
4853
+ * services with an x-internal-token client, never from the browser.
4854
+ *
4855
+ * NOT listTenantEntitlements, which answers a different question — the
4856
+ * per-tenant OVERRIDE rows alone — and would report not-entitled for every
4857
+ * customer whose grant comes from their plan.
4858
+ *
4859
+ * `tenantId` is cross-checked against the caller's authenticated scope
4860
+ * server-side and refused on a mismatch, so passing one the credential does
4861
+ * not carry is an error rather than a way to ask about somebody else.
4862
+ *
4863
+ * Returns the map verbatim, including keys that resolved false. A caller
4864
+ * must treat a MISSING key as not-entitled and never as an absent value:
4865
+ * missing means the answer did not arrive.
4866
+ */
4867
+ async checkEntitlements(params) {
4868
+ return client.checkEntitlements(
4869
+ create5(CheckEntitlementsRequestSchema, {
4870
+ tenantId: params.tenantId,
4871
+ featureKeys: params.featureKeys
4872
+ })
4873
+ );
4874
+ },
4731
4875
  // ── Feature rollout rules + cohorts (staff only) ─────────
4732
4876
  /** Staff only: every feature rollout rule, feature_key-ordered. */
4733
4877
  async listFeatureRolloutRules() {
@@ -4883,7 +5027,6 @@ function createBillingMethods(client) {
4883
5027
  basePriceCents: params.basePriceCents,
4884
5028
  billingInterval: params.billingInterval ? BILLING_INTERVAL_TO_PROTO[params.billingInterval] : void 0,
4885
5029
  currency: params.currency,
4886
- basePlanSlug: params.basePlanSlug,
4887
5030
  tenantId: params.tenantId,
4888
5031
  projectId: params.projectId,
4889
5032
  limits: (params.limits ?? []).map((l) => ({
@@ -4891,7 +5034,8 @@ function createBillingMethods(client) {
4891
5034
  includedQuantity: l.includedQuantity != null ? BigInt(l.includedQuantity) : void 0,
4892
5035
  maxQuantity: l.maxQuantity != null ? BigInt(l.maxQuantity) : void 0,
4893
5036
  overagePriceCents: l.overagePriceCents
4894
- }))
5037
+ })),
5038
+ entitlements: params.entitlements ?? []
4895
5039
  }
4896
5040
  })
4897
5041
  );
@@ -4907,14 +5051,14 @@ function createBillingMethods(client) {
4907
5051
  basePriceCents: params.basePriceCents,
4908
5052
  billingInterval: params.billingInterval ? BILLING_INTERVAL_TO_PROTO[params.billingInterval] : void 0,
4909
5053
  currency: params.currency,
4910
- basePlanSlug: params.basePlanSlug,
4911
5054
  isActive: params.isActive,
4912
5055
  limits: (params.limits ?? []).map((l) => ({
4913
5056
  metric: l.metric,
4914
5057
  includedQuantity: l.includedQuantity != null ? BigInt(l.includedQuantity) : void 0,
4915
5058
  maxQuantity: l.maxQuantity != null ? BigInt(l.maxQuantity) : void 0,
4916
5059
  overagePriceCents: l.overagePriceCents
4917
- }))
5060
+ })),
5061
+ entitlements: params.entitlements ?? []
4918
5062
  }
4919
5063
  })
4920
5064
  );
@@ -5057,7 +5201,8 @@ var FAMILY_TO_JS = {
5057
5201
  [BundleResourceFamily.API_KEYS]: "apiKeys",
5058
5202
  [BundleResourceFamily.APPS]: "apps",
5059
5203
  [BundleResourceFamily.LOCALES]: "locales",
5060
- [BundleResourceFamily.VARIANT_CATALOG]: "variantCatalog"
5204
+ [BundleResourceFamily.VARIANT_CATALOG]: "variantCatalog",
5205
+ [BundleResourceFamily.EMAIL_COPY]: "emailCopy"
5061
5206
  };
5062
5207
  var DIRECTION_TO_PROTO = {
5063
5208
  read: ConfigDirection.READ,
@@ -5292,7 +5437,8 @@ var NOTE_SUBJECT_TYPES = [
5292
5437
  "model",
5293
5438
  "operation",
5294
5439
  "schedule",
5295
- "customer"
5440
+ "customer",
5441
+ "project"
5296
5442
  ];
5297
5443
  var NOTE_SUBJECTS = [
5298
5444
  // ---------------------------------------------------------------------------
@@ -5408,6 +5554,30 @@ var NOTE_SUBJECTS = [
5408
5554
  fields: ["email"],
5409
5555
  slots: []
5410
5556
  }
5557
+ },
5558
+ // ---------------------------------------------------------------------------
5559
+ // Project — the closed set's one deliberate widening (general tasks): a note
5560
+ // about the project itself, when the work has no narrower thing to hang on.
5561
+ // Contextual: the console only ever shows a project's own notes, so the deep
5562
+ // link is the settings screen of the workspace the reader is already in and
5563
+ // the template takes no `$subjectId`. `subject_id` still holds the project
5564
+ // id, which the write path checks against the caller's own scope, so the
5565
+ // pair cannot name a project the author is not standing in.
5566
+ // ---------------------------------------------------------------------------
5567
+ {
5568
+ type: "project",
5569
+ label: "Project",
5570
+ app: "admin",
5571
+ feature: "project-settings",
5572
+ route: "/settings",
5573
+ identifier: "id",
5574
+ modelKeyed: false,
5575
+ contextual: true,
5576
+ title: {
5577
+ load: "the project",
5578
+ fields: ["name"],
5579
+ slots: []
5580
+ }
5411
5581
  }
5412
5582
  ];
5413
5583
  function isNoteSubjectType(value) {
@@ -5435,7 +5605,7 @@ function noteSubjectProblems(subject) {
5435
5605
  const kind = noteSubjectKind(type);
5436
5606
  if (!kind) {
5437
5607
  problems.push(
5438
- `subject_type ${JSON.stringify(type)} is not one of: ${NOTE_SUBJECT_TYPES.join(", ")}`
5608
+ type === void 0 || type === "" ? "subject_type is required" : `subject_type ${JSON.stringify(type)} is not one of: ${NOTE_SUBJECT_TYPES.join(", ")}`
5439
5609
  );
5440
5610
  }
5441
5611
  if (!nonEmpty(id)) {
@@ -5527,6 +5697,21 @@ function createSettingsMethods(client) {
5527
5697
  );
5528
5698
  return resp.mention ?? null;
5529
5699
  },
5700
+ /**
5701
+ * Place, move or clear the deadline on a mention. Omitting dueDate CLEARS
5702
+ * it — a mention without a due date is simply not owed by any particular
5703
+ * time. The server confines the write to the mentioned person or the
5704
+ * note's author; anyone else gets one indistinguishable not-found.
5705
+ */
5706
+ async setMentionDueDate(params) {
5707
+ const resp = await client.setMentionDueDate(
5708
+ create9(SetMentionDueDateRequestSchema, {
5709
+ mentionId: params.mentionId,
5710
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0
5711
+ })
5712
+ );
5713
+ return resp.mention ?? null;
5714
+ },
5530
5715
  // ── Notes ────────────────────────────────────────────────
5531
5716
  /**
5532
5717
  * Write a note about a SUBJECT — the closed set the note-subjects registry
@@ -5554,7 +5739,14 @@ function createSettingsMethods(client) {
5554
5739
  subjectId: params.subjectId,
5555
5740
  subjectModelKey: params.subjectModelKey,
5556
5741
  content: params.content,
5557
- parentNoteId: params.parentNoteId
5742
+ parentNoteId: params.parentNoteId,
5743
+ replyToCustomer: params.replyToCustomer,
5744
+ assigneeId: params.assigneeId,
5745
+ attachmentFileIds: params.attachmentFileIds,
5746
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0,
5747
+ anchorField: params.anchorField,
5748
+ anchorNodeId: params.anchorNodeId,
5749
+ anchorSnippet: params.anchorSnippet
5558
5750
  })
5559
5751
  );
5560
5752
  return resp.note ?? null;
@@ -5567,6 +5759,7 @@ function createSettingsMethods(client) {
5567
5759
  return client.listNotes(
5568
5760
  create9(ListNotesRequestSchema, {
5569
5761
  where: params.where,
5762
+ orderBy: params.orderBy,
5570
5763
  first: params.first ?? DEFAULT_PAGE_SIZE,
5571
5764
  after: params.after,
5572
5765
  last: params.last,
@@ -5580,7 +5773,10 @@ function createSettingsMethods(client) {
5580
5773
  id: params.id,
5581
5774
  content: params.content,
5582
5775
  isResolved: params.isResolved,
5583
- resolutionNote: params.resolutionNote
5776
+ resolutionNote: params.resolutionNote,
5777
+ assigneeId: params.assigneeId,
5778
+ dueDate: params.dueDate ? timestampFromDate(params.dueDate) : void 0,
5779
+ clearDueDate: params.clearDueDate
5584
5780
  })
5585
5781
  );
5586
5782
  return resp.note ?? null;
@@ -5591,6 +5787,78 @@ function createSettingsMethods(client) {
5591
5787
  );
5592
5788
  return resp.success;
5593
5789
  },
5790
+ // ── Note approvals ───────────────────────────────────────
5791
+ // The structured primitive behind "propose, never act": a held mutation,
5792
+ // the verb whose holders may decide it, and the decision as a recorded
5793
+ // act. Cards render on the thread; deciding is verb-gated server-side.
5794
+ /**
5795
+ * Stage a held mutation on a note. The action vocabulary is closed
5796
+ * (settle_note today) and the server DERIVES the required verb from it —
5797
+ * a caller cannot choose who may approve.
5798
+ */
5799
+ /**
5800
+ * Hand this note's work to the assistant to run UNATTENDED. Returns the
5801
+ * dispatched leg's execution id. Refused for anyone but an operator (the
5802
+ * leg acts FOR whoever hands off), and on a deployment with no assistant
5803
+ * lane configured — read the refusal, never assume dispatch.
5804
+ */
5805
+ async createNoteHandoff(params) {
5806
+ const resp = await client.createNoteHandoff(
5807
+ create9(CreateNoteHandoffRequestSchema, {
5808
+ noteId: params.noteId,
5809
+ instruction: params.instruction
5810
+ })
5811
+ );
5812
+ return resp.executionId;
5813
+ },
5814
+ /**
5815
+ * The newest handoff leg on one note, or nulls when none has ever run.
5816
+ * `status` is the execution vocabulary verbatim: pending | running |
5817
+ * completed | failed | cancelled.
5818
+ */
5819
+ async getNoteHandoffStatus(noteId) {
5820
+ const resp = await client.getNoteHandoffStatus(
5821
+ create9(GetNoteHandoffStatusRequestSchema, { noteId })
5822
+ );
5823
+ return {
5824
+ executionId: resp.executionId ?? null,
5825
+ status: resp.status ?? null,
5826
+ updatedAt: resp.updatedAt ?? null
5827
+ };
5828
+ },
5829
+ async createNoteApproval(params) {
5830
+ const resp = await client.createNoteApproval(
5831
+ create9(CreateNoteApprovalRequestSchema, {
5832
+ noteId: params.noteId,
5833
+ toolName: params.toolName,
5834
+ toolArgs: params.toolArgs,
5835
+ summary: params.summary,
5836
+ executionId: params.executionId
5837
+ })
5838
+ );
5839
+ return resp.approval ?? null;
5840
+ },
5841
+ async listNoteApprovals(noteId) {
5842
+ const resp = await client.listNoteApprovals(
5843
+ create9(ListNoteApprovalsRequestSchema, { noteId })
5844
+ );
5845
+ return resp.approvals ?? [];
5846
+ },
5847
+ /**
5848
+ * Approve or deny a pending approval. Approve RELEASES the held mutation
5849
+ * in the same transaction; deny records the reason and ends the matter. A
5850
+ * second decision is refused, never an overwrite.
5851
+ */
5852
+ async decideNoteApproval(params) {
5853
+ const resp = await client.decideNoteApproval(
5854
+ create9(DecideNoteApprovalRequestSchema, {
5855
+ approvalId: params.approvalId,
5856
+ decision: params.decision,
5857
+ reason: params.reason
5858
+ })
5859
+ );
5860
+ return resp.approval ?? null;
5861
+ },
5594
5862
  /**
5595
5863
  * Full-text search across notes, optionally narrowed to one kind of
5596
5864
  * subject — and, for records, to one model.
@@ -5604,6 +5872,7 @@ function createSettingsMethods(client) {
5604
5872
  return client.searchNotes(
5605
5873
  create9(SearchNotesRequestSchema, {
5606
5874
  query: params.query,
5875
+ mode: params.mode,
5607
5876
  subjectType: params.subjectType,
5608
5877
  subjectModelKey: params.subjectModelKey,
5609
5878
  first: params.first ?? DEFAULT_PAGE_SIZE,
@@ -6285,6 +6554,13 @@ function parseBytes(data) {
6285
6554
  return void 0;
6286
6555
  }
6287
6556
  }
6557
+ function withDecodedPayloads(exec) {
6558
+ return {
6559
+ ...exec,
6560
+ result: parseBytes(exec.resultJson) ?? null,
6561
+ error: parseBytes(exec.errorJson) ?? null
6562
+ };
6563
+ }
6288
6564
  function createOperationsMethods(client) {
6289
6565
  return {
6290
6566
  // ── CRUD ──────────────────────────────────────────────────
@@ -6427,7 +6703,7 @@ function createOperationsMethods(client) {
6427
6703
  })
6428
6704
  );
6429
6705
  return {
6430
- items: resp.executions ?? [],
6706
+ items: (resp.executions ?? []).map(withDecodedPayloads),
6431
6707
  total: resp.total,
6432
6708
  pageInfo: toPageInfo(resp.pageInfo)
6433
6709
  };
@@ -7065,10 +7341,19 @@ function createNotificationsMethods(client) {
7065
7341
  actionUrl: params.actionUrl,
7066
7342
  targetType: params.targetType,
7067
7343
  targetIds: params.targetIds ?? [],
7068
- category: params.category
7344
+ category: params.category,
7345
+ dryRun: params.dryRun
7069
7346
  })
7070
7347
  );
7071
- return resp.notification ?? null;
7348
+ return {
7349
+ notification: resp.notification ?? null,
7350
+ audience: resp.audience ? {
7351
+ recipientCount: resp.audience.recipientCount,
7352
+ workspaceCount: resp.audience.workspaceCount,
7353
+ suppressedCount: resp.audience.suppressedCount,
7354
+ sampleEmails: resp.audience.sampleEmails ?? []
7355
+ } : null
7356
+ };
7072
7357
  },
7073
7358
  async listAnnouncementHistory(params = {}) {
7074
7359
  return client.listAnnouncementHistory(
@@ -7103,10 +7388,16 @@ function createNotificationsMethods(client) {
7103
7388
  metadata: params.metadata,
7104
7389
  imageUrl: params.imageUrl,
7105
7390
  expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
7106
- channels: buildNotificationChannels(params)
7391
+ channels: buildNotificationChannels(params),
7392
+ richBody: params.richBody,
7393
+ copyActionKey: params.copyActionKey,
7394
+ dryRun: params.dryRun
7107
7395
  })
7108
7396
  );
7109
- return resp.notification ?? null;
7397
+ return {
7398
+ notification: resp.notification ?? null,
7399
+ preview: resp.preview ?? null
7400
+ };
7110
7401
  },
7111
7402
  async sendBulkCustomerNotification(params) {
7112
7403
  const resp = await client.sendBulkCustomerNotification(
@@ -7119,10 +7410,11 @@ function createNotificationsMethods(client) {
7119
7410
  metadata: params.metadata,
7120
7411
  imageUrl: params.imageUrl,
7121
7412
  expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
7122
- channels: buildNotificationChannels(params)
7413
+ channels: buildNotificationChannels(params),
7414
+ dryRun: params.dryRun
7123
7415
  })
7124
7416
  );
7125
- return resp.count;
7417
+ return { count: resp.count, preview: resp.preview ?? null };
7126
7418
  },
7127
7419
  // ── Notification Preferences ──────────────────────────────
7128
7420
  /**
@@ -10113,7 +10405,8 @@ var FAMILY_LABELS = {
10113
10405
  apiKeys: "API keys",
10114
10406
  apps: "Apps",
10115
10407
  locales: "Locales",
10116
- variantCatalog: "Variant catalog"
10408
+ variantCatalog: "Variant catalog",
10409
+ emailCopy: "Email copy"
10117
10410
  };
10118
10411
  function familyLabel(family) {
10119
10412
  return FAMILY_LABELS[family] ?? family;
@@ -11303,6 +11596,170 @@ function registerContextCommands(program2, globalOpts) {
11303
11596
  }
11304
11597
 
11305
11598
  // src/commands/models.ts
11599
+ var CREATE_MODEL_EXAMPLE = `A model is:
11600
+ -d '{"key":"article","name":"Article","fields":[{"key":"title","label":"Title","type":"text"}]}'`;
11601
+ var UPDATE_MODEL_EXAMPLE = `A model update is:
11602
+ -d '{"name":"Article","fields":[{"key":"title","label":"Title","type":"text"}]}'`;
11603
+ var SCHEMA_PROBLEM = 'a model has no "schema": its shape is a "fields" array of field objects, not a JSON-Schema document';
11604
+ function requiredString(data, key, problems) {
11605
+ const value = data[key];
11606
+ if (value === void 0 || value === "") {
11607
+ problems.push(`"${key}" is required`);
11608
+ return void 0;
11609
+ }
11610
+ if (typeof value !== "string") {
11611
+ problems.push(`"${key}" must be a string, not ${JSON.stringify(value)}`);
11612
+ return void 0;
11613
+ }
11614
+ return value;
11615
+ }
11616
+ function optionalString(data, key, problems) {
11617
+ const value = data[key];
11618
+ if (value === void 0) return void 0;
11619
+ if (typeof value !== "string") {
11620
+ problems.push(`"${key}" must be a string, not ${JSON.stringify(value)}`);
11621
+ return void 0;
11622
+ }
11623
+ return value;
11624
+ }
11625
+ function optionalBoolean(data, key, problems) {
11626
+ const value = data[key];
11627
+ if (value === void 0) return void 0;
11628
+ if (typeof value !== "boolean") {
11629
+ problems.push(
11630
+ `"${key}" must be true or false, not ${JSON.stringify(value)}`
11631
+ );
11632
+ return void 0;
11633
+ }
11634
+ return value;
11635
+ }
11636
+ function optionalConfig(data, problems) {
11637
+ const value = data.config;
11638
+ if (value === void 0) return void 0;
11639
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
11640
+ problems.push(
11641
+ `"config" must be an object of model settings, not ${JSON.stringify(value)}`
11642
+ );
11643
+ return void 0;
11644
+ }
11645
+ return value;
11646
+ }
11647
+ function collectFieldProblems(value, at, problems) {
11648
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
11649
+ problems.push(`${at} must be an object, not ${JSON.stringify(value)}`);
11650
+ return;
11651
+ }
11652
+ const field = value;
11653
+ for (const key of ["key", "type"]) {
11654
+ const v = field[key];
11655
+ if (v === void 0 || v === "") {
11656
+ problems.push(`${at}.${key} is required`);
11657
+ } else if (typeof v !== "string") {
11658
+ problems.push(`${at}.${key} must be a string, not ${JSON.stringify(v)}`);
11659
+ }
11660
+ }
11661
+ if (field.label !== void 0 && typeof field.label !== "string") {
11662
+ problems.push(
11663
+ `${at}.label must be a string, not ${JSON.stringify(field.label)}`
11664
+ );
11665
+ }
11666
+ if (field.required !== void 0 && typeof field.required !== "boolean") {
11667
+ problems.push(
11668
+ `${at}.required must be true or false, not ${JSON.stringify(field.required)}`
11669
+ );
11670
+ }
11671
+ }
11672
+ function readFields(data, problems, opts) {
11673
+ const value = data.fields;
11674
+ if (value === void 0) {
11675
+ if (opts.required) problems.push('"fields" is required');
11676
+ return void 0;
11677
+ }
11678
+ if (!Array.isArray(value)) {
11679
+ problems.push(
11680
+ `"fields" must be an array of field objects, not ${JSON.stringify(value)}`
11681
+ );
11682
+ return void 0;
11683
+ }
11684
+ if (value.length === 0) {
11685
+ problems.push('"fields" must not be empty: a model needs at least one field');
11686
+ return void 0;
11687
+ }
11688
+ const before = problems.length;
11689
+ value.forEach(
11690
+ (field, index) => collectFieldProblems(field, `fields[${index}]`, problems)
11691
+ );
11692
+ if (problems.length > before) return void 0;
11693
+ return value;
11694
+ }
11695
+ function readModelDocument(data, example) {
11696
+ if (typeof data !== "object" || data === null || Array.isArray(data)) {
11697
+ throw new Error(
11698
+ `the model data must be a JSON object, not ${JSON.stringify(data)}
11699
+
11700
+ ${example}`
11701
+ );
11702
+ }
11703
+ return data;
11704
+ }
11705
+ function readCreateModelData(input) {
11706
+ const data = readModelDocument(input, CREATE_MODEL_EXAMPLE);
11707
+ const problems = [];
11708
+ if ("schema" in data) problems.push(SCHEMA_PROBLEM);
11709
+ const key = requiredString(data, "key", problems);
11710
+ const name = requiredString(data, "name", problems);
11711
+ const fields = readFields(data, problems, { required: true });
11712
+ const config2 = optionalConfig(data, problems);
11713
+ const configId = optionalString(data, "configId", problems);
11714
+ const groupId = optionalString(data, "groupId", problems);
11715
+ const updatePushSnapshot = optionalBoolean(
11716
+ data,
11717
+ "updatePushSnapshot",
11718
+ problems
11719
+ );
11720
+ if (problems.length > 0 || key === void 0 || name === void 0 || fields === void 0) {
11721
+ throw new Error(`${problems.join("\n")}
11722
+
11723
+ ${CREATE_MODEL_EXAMPLE}`);
11724
+ }
11725
+ return { key, name, fields, config: config2, configId, groupId, updatePushSnapshot };
11726
+ }
11727
+ function readUpdateModelData(input) {
11728
+ const data = readModelDocument(input, UPDATE_MODEL_EXAMPLE);
11729
+ const problems = [];
11730
+ if ("schema" in data) problems.push(SCHEMA_PROBLEM);
11731
+ const name = optionalString(data, "name", problems);
11732
+ const fields = readFields(data, problems, { required: false });
11733
+ const config2 = optionalConfig(data, problems);
11734
+ const changeDescription = optionalString(data, "changeDescription", problems);
11735
+ const expectedVersionId = optionalString(data, "expectedVersionId", problems);
11736
+ const updatePushSnapshot = optionalBoolean(
11737
+ data,
11738
+ "updatePushSnapshot",
11739
+ problems
11740
+ );
11741
+ const snapshotOnly = optionalBoolean(data, "snapshotOnly", problems);
11742
+ const allowLookupRebuild = optionalBoolean(
11743
+ data,
11744
+ "allowLookupRebuild",
11745
+ problems
11746
+ );
11747
+ if (problems.length > 0) {
11748
+ throw new Error(`${problems.join("\n")}
11749
+
11750
+ ${UPDATE_MODEL_EXAMPLE}`);
11751
+ }
11752
+ return {
11753
+ name,
11754
+ fields,
11755
+ config: config2,
11756
+ changeDescription,
11757
+ expectedVersionId,
11758
+ updatePushSnapshot,
11759
+ snapshotOnly,
11760
+ allowLookupRebuild
11761
+ };
11762
+ }
11306
11763
  function registerModelsCommands(program2, globalOpts) {
11307
11764
  const models = program2.command("models").description("Manage models");
11308
11765
  models.command("list").description("List all models").option("--category <cat>", "Filter by category").option("--search <term>", "Search by name").option("--first <n>", "Max results", "50").option("--after <cursor>", "Opaque cursor from previous page").action(
@@ -11345,9 +11802,9 @@ function registerModelsCommands(program2, globalOpts) {
11345
11802
  models.command("create").description("Create a new model").option("-d, --data <json>", "Model data as JSON").option("-f, --file <path>", "Read data from file").action(
11346
11803
  withErrorHandler(globalOpts, async (cmdOpts) => {
11347
11804
  const opts = globalOpts();
11805
+ const params = readCreateModelData(await parseInputData(cmdOpts));
11348
11806
  const client = await createPlatformClient(opts);
11349
- const inputData = await parseInputData(cmdOpts);
11350
- const model = await client.models.createModel(inputData);
11807
+ const model = await client.models.createModel(params);
11351
11808
  formatOutputProto(ModelSchema, model, opts);
11352
11809
  if (!(opts.json || opts.jsonl || opts.quiet)) {
11353
11810
  success(`Created model ${model?.key}`);
@@ -11359,15 +11816,15 @@ function registerModelsCommands(program2, globalOpts) {
11359
11816
  globalOpts,
11360
11817
  async (key, cmdOpts) => {
11361
11818
  const opts = globalOpts();
11819
+ const patch = readUpdateModelData(await parseInputData(cmdOpts));
11362
11820
  const client = await createPlatformClient(opts);
11363
11821
  const existing = await client.models.getModelByKey(key);
11364
11822
  if (!existing) {
11365
11823
  throw new Error(`Model "${key}" not found.`);
11366
11824
  }
11367
- const inputData = await parseInputData(cmdOpts);
11368
11825
  const model = await client.models.updateModel({
11369
11826
  id: existing.id,
11370
- ...inputData
11827
+ ...patch
11371
11828
  });
11372
11829
  formatOutputProto(ModelSchema, model, opts);
11373
11830
  if (!(opts.json || opts.jsonl || opts.quiet)) {
@@ -14331,20 +14788,40 @@ function withSubjectOptions(command) {
14331
14788
  function registerNotesCommands(program2, globalOpts) {
14332
14789
  const notes = program2.command("notes").description("Manage notes and comments");
14333
14790
  withSubjectOptions(
14334
- notes.command("list").description("List notes on a subject")
14791
+ notes.command("list").description("List notes on a subject, or an operator's task queue")
14792
+ ).option(
14793
+ "--assignee <operatorId>",
14794
+ "List the notes ASSIGNED to this operator \u2014 their task queue. On its own it spans the whole project; with the subject flags it narrows to one thing"
14335
14795
  ).option("--include-resolved", "Include resolved notes").option("--first <n>", "Max results", "20").action(
14336
14796
  withErrorHandler(globalOpts, async (cmdOpts) => {
14337
14797
  rejectRetiredEntityFlags(cmdOpts);
14338
- const subject = readSubject(cmdOpts);
14798
+ const where = {};
14799
+ const wantsSubject = cmdOpts.subjectType !== void 0 || cmdOpts.subjectId !== void 0 || cmdOpts.modelKey !== void 0;
14800
+ const assignee = typeof cmdOpts.assignee === "string" ? cmdOpts.assignee : void 0;
14801
+ if (assignee !== void 0) {
14802
+ where.assigneeId = { eq: assignee };
14803
+ }
14804
+ if (wantsSubject || assignee === void 0) {
14805
+ let subject;
14806
+ try {
14807
+ subject = readSubject(cmdOpts);
14808
+ } catch (err) {
14809
+ if (wantsSubject) throw err;
14810
+ throw new Error(
14811
+ `${err.message}
14812
+
14813
+ An operator's task queue needs no subject:
14814
+ --assignee <operatorId>`
14815
+ );
14816
+ }
14817
+ where.subjectType = { eq: subject.type };
14818
+ where.subjectId = { eq: subject.id };
14819
+ if (subject.modelKey) {
14820
+ where.subjectModelKey = { eq: subject.modelKey };
14821
+ }
14822
+ }
14339
14823
  const opts = globalOpts();
14340
14824
  const client = await createPlatformClient(opts);
14341
- const where = {
14342
- subjectType: { eq: subject.type },
14343
- subjectId: { eq: subject.id }
14344
- };
14345
- if (subject.modelKey) {
14346
- where.subjectModelKey = { eq: subject.modelKey };
14347
- }
14348
14825
  if (!cmdOpts.includeResolved) where.isResolved = { eq: false };
14349
14826
  const data = await client.settings.listNotes({
14350
14827
  where,
@@ -14360,6 +14837,10 @@ function registerNotesCommands(program2, globalOpts) {
14360
14837
  // createdBy is the attribution field. There is no authorId on Note,
14361
14838
  // so the column this replaced was blank on every row.
14362
14839
  { key: "createdBy", header: "Author", width: 16 },
14840
+ // The owner of the work, distinct from the author of the text. A
14841
+ // note with one IS a task, so this column is what separates the
14842
+ // task list from the discussion around it.
14843
+ { key: "assigneeId", header: "Assignee", width: 16 },
14363
14844
  {
14364
14845
  key: "isResolved",
14365
14846
  header: "Resolved",
@@ -14388,7 +14869,10 @@ function registerNotesCommands(program2, globalOpts) {
14388
14869
  );
14389
14870
  withSubjectOptions(
14390
14871
  notes.command("create").description("Create a note on a subject")
14391
- ).requiredOption("--body <text>", "Note body text").option("--parent-note-id <id>", "Reply to a note").action(
14872
+ ).requiredOption("--body <text>", "Note body text").option("--parent-note-id <id>", "Reply to a note").option(
14873
+ "--assignee <operatorId>",
14874
+ "Hand the note to this operator as work, making it a task from the moment it is written. Refused if they have no access to the project"
14875
+ ).action(
14392
14876
  withErrorHandler(globalOpts, async (cmdOpts) => {
14393
14877
  rejectRetiredEntityFlags(cmdOpts);
14394
14878
  const subject = readSubject(cmdOpts);
@@ -14403,11 +14887,39 @@ function registerNotesCommands(program2, globalOpts) {
14403
14887
  if (cmdOpts.parentNoteId) {
14404
14888
  params.parentNoteId = cmdOpts.parentNoteId;
14405
14889
  }
14890
+ if (cmdOpts.assignee) {
14891
+ params.assigneeId = cmdOpts.assignee;
14892
+ }
14406
14893
  const note = await client.settings.createNote(params);
14407
14894
  formatOutputProto(NoteSchema, note, opts);
14408
14895
  if (!(opts.json || opts.jsonl || opts.quiet)) success("Note created");
14409
14896
  })
14410
14897
  );
14898
+ notes.command("assign <id> <operatorId>").description(
14899
+ "Hand a note to an operator as work, making it a task. Use unassign to hand it back"
14900
+ ).action(
14901
+ withErrorHandler(globalOpts, async (id, operatorId) => {
14902
+ const opts = globalOpts();
14903
+ const client = await createPlatformClient(opts);
14904
+ const note = await client.settings.updateNote({
14905
+ id,
14906
+ assigneeId: operatorId
14907
+ });
14908
+ formatOutputProto(NoteSchema, note, opts);
14909
+ if (!(opts.json || opts.jsonl || opts.quiet))
14910
+ success(`Assigned note ${id} to ${operatorId}`);
14911
+ })
14912
+ );
14913
+ notes.command("unassign <id>").description("Take a note back off whoever owns it, leaving it a comment").action(
14914
+ withErrorHandler(globalOpts, async (id) => {
14915
+ const opts = globalOpts();
14916
+ const client = await createPlatformClient(opts);
14917
+ const note = await client.settings.updateNote({ id, assigneeId: "" });
14918
+ formatOutputProto(NoteSchema, note, opts);
14919
+ if (!(opts.json || opts.jsonl || opts.quiet))
14920
+ success(`Unassigned note ${id}`);
14921
+ })
14922
+ );
14411
14923
  notes.command("resolve <id>").description("Resolve a note").option("--resolution <text>", "Why the discussion is closed").action(
14412
14924
  withErrorHandler(
14413
14925
  globalOpts,
@@ -15838,6 +16350,8 @@ async function fetchFoirManifest(config2) {
15838
16350
  }
15839
16351
  return await res.json();
15840
16352
  }
16353
+ var MAX_QUERY_COMPLEXITY = 1e4;
16354
+ var MAX_EMITTED_FIELDS = 4 * MAX_QUERY_COMPLEXITY;
15841
16355
 
15842
16356
  // src/lib/types-codegen.ts
15843
16357
  var FoirTypesGenerationError = class extends Error {
@@ -15857,25 +16371,34 @@ var SCALAR_TS = {
15857
16371
  JSON: "FoirJsonValue"
15858
16372
  };
15859
16373
  var VALUE_OBJECT_TS = {
16374
+ // What a current server emits.
16375
+ Image: "Image",
16376
+ Video: "Video",
16377
+ FileValue: "FileValue",
16378
+ Richtext: "Richtext",
16379
+ GeoPoint: "GeoPoint",
16380
+ Reference: "Reference",
16381
+ CollabInfo: "CollabInfo",
16382
+ // Pre-TTS-1391 captures. Same shapes, and the SDK still exports these names.
15860
16383
  ImageValue: "ImageValue",
15861
16384
  VideoValue: "VideoValue",
15862
- FileValue: "FileValue",
15863
16385
  MediaValue: "MediaValue",
15864
16386
  RichtextValue: "RichtextValue",
15865
16387
  GeoPointValue: "GeoPointValue",
15866
- ReferenceValue: "ReferenceValue",
15867
- CollabInfo: "CollabInfo"
16388
+ ReferenceValue: "ReferenceValue"
15868
16389
  };
15869
- var BLOCK_PRIMITIVE_TS = {
15870
- text: "TextBlock",
15871
- image: "ImageBlock",
15872
- video: "VideoBlock",
15873
- file: "FileBlock",
15874
- richtext: "RichtextBlock",
15875
- media: "MediaBlock",
15876
- reference: "ReferenceBlock",
15877
- flexible: "FlexibleBlock"
16390
+ var RETIRED_PRIMITIVES = /* @__PURE__ */ new Set(["text", "media", "flexible"]);
16391
+ var ITEM_PRIMITIVE_TS = {
16392
+ richtext: "Richtext",
16393
+ image: "Image",
16394
+ video: "Video",
16395
+ file: "FileValue",
16396
+ reference: "Reference",
16397
+ geopoint: "GeoPoint"
15878
16398
  };
16399
+ var ITEM_PRIMITIVE_KEY_BY_TYPE = Object.fromEntries(
16400
+ Object.entries(ITEM_PRIMITIVE_TS).map(([key, typeName]) => [typeName, key])
16401
+ );
15879
16402
  var ARG_TS = {
15880
16403
  after: "string",
15881
16404
  before: "string",
@@ -15922,6 +16445,7 @@ var RETURN_IMPORTS = [
15922
16445
  ];
15923
16446
  var RESERVED_MODEL_KEYS = /* @__PURE__ */ new Set(["raw", "ns"]);
15924
16447
  var RECORD_REF_TYPE = "FoirRecordRef";
16448
+ var TYPED_DEPTH_LEVELS = [2, 3, 4];
15925
16449
  var quote = (s) => `'${s.replace(/\\/g, "\\\\").replace(/'/g, "\\'")}'`;
15926
16450
  var propKey = (key) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? key : quote(key);
15927
16451
  var pascal = (s) => s.split(/[^a-zA-Z0-9]+/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join("");
@@ -15954,9 +16478,15 @@ var Emitter = class {
15954
16478
  this.modelKeys = Object.keys(manifest.models ?? {}).sort();
15955
16479
  this.namespaceNames = Object.keys(manifest.namespaces ?? {}).sort();
15956
16480
  this.cyclic = compositeCycleMembers(manifest);
16481
+ this.truncatedComposites = truncatedBlockComposites(manifest);
16482
+ this.cutFields = blockCutFields(manifest);
16483
+ this.cutModels = cutReach(manifest, this.cutFields);
16484
+ this.depth = depthReach(manifest, this.truncatedComposites, this.cutModels);
15957
16485
  this.aliasIndex = buildAliasIndex(manifest);
15958
16486
  this.unionRefs = buildUnionRefs(manifest);
15959
16487
  this.vocabularies = buildSortVocabularies(manifest, this.modelKeys, this.warnings);
16488
+ this.memberKeyByName = modelKeyByMemberName(manifest);
16489
+ this.proseUnions = proseEntryUnions(manifest);
15960
16490
  }
15961
16491
  manifest;
15962
16492
  options;
@@ -15964,6 +16494,14 @@ var Emitter = class {
15964
16494
  warnings = [];
15965
16495
  /** Model keys whose composites cycle — see `compositeCycleMembers`. */
15966
16496
  cyclic;
16497
+ /** Composites the server cut inside a block member — see `truncatedBlockComposites`. */
16498
+ truncatedComposites;
16499
+ /** Fields the server cut BELOW a block member — see `blockCutFields`. */
16500
+ cutFields;
16501
+ /** Model keys whose interface carries the `<C>` cut parameter. See `cutReach`. */
16502
+ cutModels;
16503
+ /** Which types carry the `<D>` union-level parameter. See `depthReach`. */
16504
+ depth;
15967
16505
  modelKeys;
15968
16506
  namespaceNames;
15969
16507
  /** Union type name → member type name → the fields that union renames. */
@@ -15972,6 +16510,10 @@ var Emitter = class {
15972
16510
  unionRefs;
15973
16511
  /** Model key → the sort vocabulary the manifest published for it. */
15974
16512
  vocabularies;
16513
+ /** Union member type name → model key, for prose entries. */
16514
+ memberKeyByName;
16515
+ /** `<modelKey>.<fieldKey>` → the union its prose entries expand to. */
16516
+ proseUnions;
15975
16517
  projections = /* @__PURE__ */ new Map();
15976
16518
  unionMemberCount = 0;
15977
16519
  needsRecordRef = false;
@@ -15985,7 +16527,6 @@ var Emitter = class {
15985
16527
  }
15986
16528
  const unions = this.emitUnionAliases();
15987
16529
  const projections = this.emitMemberProjections();
15988
- const blocks = this.emitBlockMembers();
15989
16530
  const models = this.emitModelInterfaces();
15990
16531
  const orderBys = this.emitOrderByTypes();
15991
16532
  const args = this.emitArgs();
@@ -15996,7 +16537,6 @@ var Emitter = class {
15996
16537
  ...models,
15997
16538
  ...unions.length ? ["", ...unions] : [],
15998
16539
  ...recordRef.length ? ["", ...recordRef] : [],
15999
- ...blocks.length ? ["", ...blocks] : [],
16000
16540
  ...projections.length ? ["", ...projections] : [],
16001
16541
  ...orderBys.length ? ["", ...orderBys] : [],
16002
16542
  ...args.length ? ["", ...args] : [],
@@ -16188,11 +16728,30 @@ var Emitter = class {
16188
16728
  ],
16189
16729
  " * - namespace op arguments and results (`unknown` \u2014 the manifest lists root",
16190
16730
  " * field NAMES only);",
16191
- " * - anything past a cycle. The op compiler never expands a type already on",
16192
- " * the current path, so a self-referential composite and a union nested",
16193
- " * inside a union member arrive carrying `__typename` and nothing else.",
16194
- " * Those positions are typed `FoirDegraded`; reach the rest with",
16195
- " * `foir.raw()`.",
16731
+ " * - anything past a stopping point. The op compiler never expands a type",
16732
+ " * already on the current path, so a self-referential composite, a union",
16733
+ " * nested inside a union member, and a composite reached THROUGH a union",
16734
+ " * member all arrive carrying `__typename` and nothing else. Those",
16735
+ " * positions are typed `FoirDegraded`.",
16736
+ " *",
16737
+ " * A stopping point in front of a UNION can be bought back a level at a time:",
16738
+ " * `foir.<model>.findMany({ depth: 2 })` fetches it AND types it, so the nested",
16739
+ " * member is read with a `__typename` narrowing and no cast. The composites on",
16740
+ " * the path carry a `<D>` level parameter for that, defaulted to 1 \u2014 which is",
16741
+ " * why a call passing no `depth` gets the same type it always did.",
16742
+ " *",
16743
+ " * A COMPOSITE stopping point cannot be bought back at all \u2014 there is no union",
16744
+ " * to expand, so it is `FoirDegraded` at every level. Read the record it names",
16745
+ " * with a second call.",
16746
+ ...this.cutModels.size ? [
16747
+ " *",
16748
+ " * A stopping point can also land BELOW a union member, inside a composite",
16749
+ " * subtree the compiler did expand. The shape reached there is the same one",
16750
+ " * a model position reaches, and it arrives differently at each \u2014 so it takes",
16751
+ " * a second parameter, `C`, which its REFERENCE sets: `true` from inside a",
16752
+ " * union member, `false` (the default) everywhere else. Nothing a caller",
16753
+ " * writes ever passes it; it is set by the position the value came from."
16754
+ ] : [],
16196
16755
  " */"
16197
16756
  ];
16198
16757
  }
@@ -16228,6 +16787,7 @@ var Emitter = class {
16228
16787
  } else if (VALUE_OBJECT_TS[scalar.type]) {
16229
16788
  base = VALUE_OBJECT_TS[scalar.type];
16230
16789
  this.imports.add(base);
16790
+ if (base === "Reference") base = `Reference<${this.recordRefType()}>`;
16231
16791
  } else {
16232
16792
  this.warnings.push(
16233
16793
  `${modelKey}.${scalar.key}: no TypeScript mapping for GraphQL type "${scalar.type}" \u2014 emitted \`unknown\``
@@ -16237,34 +16797,165 @@ var Emitter = class {
16237
16797
  return wrap(base, { list: scalar.list, nullable: scalar.nullable });
16238
16798
  }
16239
16799
  // -------------------------------------------------------------------------
16240
- // Composites
16800
+ // Structurals — prose and the hierarchy walk
16241
16801
  // -------------------------------------------------------------------------
16242
16802
  /**
16243
- * A composite's type: the target model's own interface, or `FoirDegraded`
16244
- * when the target sits in a composite cycle with the owner.
16803
+ * The element type of a platform-owned structural field.
16804
+ *
16805
+ * Two shapes, and only two: the hierarchy walk's `ancestors`, and a prose
16806
+ * wrapper. Both are shipped by `@foir/sdk/data` rather than generated,
16807
+ * because their fields are identical in every project — what is NOT
16808
+ * identical is a prose field's `entries`, which is why `Prose` takes a
16809
+ * parameter and this resolves it per field.
16810
+ *
16811
+ * Resolved from the SELECTION TREE, not from the wrapper's name. The name
16812
+ * (`ProseCta`, `ProseCtaMedia`) is the generator's composition of its
16813
+ * members' type names, and re-deriving a member set by splitting it back
16814
+ * apart would be a parse of somebody else's naming — ambiguous the moment
16815
+ * two model type names concatenate to a third. The tree publishes the
16816
+ * union's members directly.
16817
+ */
16818
+ structuralType(modelKey, structural) {
16819
+ if (structural.type === "RecordAncestor") {
16820
+ this.imports.add("RecordAncestor");
16821
+ return "Array<RecordAncestor>";
16822
+ }
16823
+ if (structural.type === "Prose" || structural.type.startsWith("Prose")) {
16824
+ this.imports.add("Prose");
16825
+ const entries = this.proseEntriesType(modelKey, structural.key);
16826
+ return wrap(`Prose<${entries}>`, { list: structural.list, nullable: structural.nullable });
16827
+ }
16828
+ this.warnings.push(
16829
+ `${modelKey}.${structural.key}: no TypeScript mapping for structural type "${structural.type}" \u2014 emitted \`unknown\``
16830
+ );
16831
+ return wrap("unknown", { list: structural.list, nullable: structural.nullable });
16832
+ }
16833
+ /**
16834
+ * A prose field's entries element: `Passage` for a text-only field, and
16835
+ * `Passage | <each admitted embed>` for one that places models.
16245
16836
  *
16246
- * The compiler's termination rule is *never expand a type already on the
16247
- * current path*, so `tilly_menu.items[].children[]` — `tilly_menu_item`
16248
- * embedding itself — comes back as `{ __typename }`. Cutting at the cycle
16249
- * models that exactly for a direct self-reference, and under-promises (never
16250
- * over-promises) for a longer one: the cut is at the first edge back into the
16251
- * cycle, which is at or before where the server degrades.
16837
+ * `Passage` is the fallback for every absence — a server that publishes no
16838
+ * selection trees, a field the tree does not describe, a member the
16839
+ * credential cannot see. A text-only prose field is the DEFAULT declaration
16840
+ * (an absent `allowedTypes` means text only), so widening to it on absence
16841
+ * is the same answer as widening to the default, not a guess.
16252
16842
  */
16253
- compositeType(ownerKey, composite) {
16843
+ proseEntriesType(modelKey, fieldKey) {
16844
+ const unionRef = this.proseUnions.get(`${modelKey}.${fieldKey}`);
16845
+ if (!unionRef) {
16846
+ this.imports.add("Passage");
16847
+ return "Passage";
16848
+ }
16849
+ const members = this.manifest.selectionUnions?.[unionRef]?.members ?? [];
16850
+ const parts = [];
16851
+ for (const member of members) {
16852
+ if (member.typeName === "Passage") {
16853
+ this.imports.add("Passage");
16854
+ parts.push("Passage");
16855
+ continue;
16856
+ }
16857
+ const primitiveKey = ITEM_PRIMITIVE_KEY_BY_TYPE[member.typeName];
16858
+ if (primitiveKey) {
16859
+ parts.push(this.unionMemberType(modelKey, fieldKey, primitiveKey));
16860
+ continue;
16861
+ }
16862
+ const key = this.memberKeyByName.get(member.typeName);
16863
+ const target = key ? this.manifest.models?.[key] : void 0;
16864
+ if (!target || !key) {
16865
+ this.imports.add("FoirDegraded");
16866
+ parts.push(`FoirDegraded<${quote(member.typeName)}>`);
16867
+ continue;
16868
+ }
16869
+ parts.push(`${target.typeName}${this.depthArg(this.depth.models.has(key))}`);
16870
+ }
16871
+ if (parts.length === 0) {
16872
+ this.imports.add("Passage");
16873
+ return "Passage";
16874
+ }
16875
+ return parts.join(" | ");
16876
+ }
16877
+ // -------------------------------------------------------------------------
16878
+ // Composites
16879
+ // -------------------------------------------------------------------------
16880
+ /** The element type of a composite — everything inside `Array<… | null>`. */
16881
+ compositeElement(ownerKey, composite, truncated, cutFlag) {
16254
16882
  const target = this.manifest.models?.[composite.target];
16255
16883
  if (!target) {
16256
16884
  throw new FoirTypesGenerationError(
16257
16885
  `model "${ownerKey}" has a composite "${composite.key}" targeting "${composite.target}", which is not in the manifest's \`models\`. The payload is supposed to be closed over composite targets, so this is a manifest bug, not a generator one.`
16258
16886
  );
16259
16887
  }
16260
- const base = this.cyclic.has(ownerKey) && this.cyclic.has(composite.target) ? this.degraded(target.typeName) : target.typeName;
16261
- return wrap(base, { list: composite.list, nullable: composite.nullable });
16888
+ const cut = truncated || this.cyclic.has(ownerKey) && this.cyclic.has(composite.target);
16889
+ if (cut) return this.degraded(target.typeName);
16890
+ const args = this.depthArg(
16891
+ this.depth.models.has(composite.target),
16892
+ this.cutArg(composite.target, cutFlag)
16893
+ );
16894
+ return `${target.typeName}${args}`;
16895
+ }
16896
+ /**
16897
+ * The cut flag to pass to a REFERENCED type, or nothing.
16898
+ *
16899
+ * `''` where the target does not take `<C>` — most of them — so a reference
16900
+ * that could only resolve to the default stays plain. Otherwise whatever the
16901
+ * referencing position knows: `true` from inside a union member, and the
16902
+ * owner's own `C` from a model interface, which is why the answer travels
16903
+ * with the reference rather than sitting in the target's declaration.
16904
+ */
16905
+ cutArg(target, cutFlag) {
16906
+ return this.cutModels.has(target) ? cutFlag : "";
16262
16907
  }
16263
16908
  degraded(typeName) {
16264
16909
  this.imports.add("FoirDegraded");
16265
16910
  return `FoirDegraded<${quote(typeName)}>`;
16266
16911
  }
16267
16912
  // -------------------------------------------------------------------------
16913
+ // Depth — the `<D>` parameter
16914
+ // -------------------------------------------------------------------------
16915
+ /** `<D>` / `<D, true>` where a referenced type takes the parameters, nothing where it does not. */
16916
+ depthArg(generic, cutFlag = "") {
16917
+ if (!generic) {
16918
+ if (cutFlag) {
16919
+ throw new FoirTypesGenerationError(
16920
+ `internal: a reference passes the cut flag "${cutFlag}" to a type that takes no <D> parameter, so the argument list would be positionally wrong. \`depthReach\` must seed its model set with \`cutReach\`.`
16921
+ );
16922
+ }
16923
+ return "";
16924
+ }
16925
+ return cutFlag ? `<D, ${cutFlag}>` : "<D>";
16926
+ }
16927
+ /**
16928
+ * The parameter list on a declaration.
16929
+ *
16930
+ * `<D>` first and `<C>` second at every declaration that takes both, which is
16931
+ * what lets a reference write `<D, true>` without knowing anything else about
16932
+ * the target.
16933
+ */
16934
+ depthParam(generic, cut = false) {
16935
+ if (!generic) return "";
16936
+ this.imports.add("FoirDepthLevel");
16937
+ return cut ? "<D extends FoirDepthLevel = 1, C extends boolean = false>" : "<D extends FoirDepthLevel = 1>";
16938
+ }
16939
+ /**
16940
+ * A block member's truncated union field.
16941
+ *
16942
+ * The whole point of the parameter. At level 1 — the complete-by-default
16943
+ * document, and what every reference resolves to when a caller passes no
16944
+ * `depth` — this is the degraded alias and the emitted text is what it always
16945
+ * was. Above 1 it is the expanded union with one level spent, which is
16946
+ * exactly what the printer does at this position: `printFields` expands a
16947
+ * `truncated` field carrying a union only when the budget allows, and
16948
+ * recurses at `depth - 1`.
16949
+ */
16950
+ truncatedUnionType(key, model, fieldKey) {
16951
+ const degraded = this.degradedUnionName(model, fieldKey);
16952
+ const union = this.unionTypeName(model, fieldKey);
16953
+ const generic = this.depth.unions.has(`${key}.${fieldKey}`);
16954
+ if (generic) this.imports.add("FoirDepthBelow");
16955
+ const expanded = generic ? `${union}<FoirDepthBelow[D]>` : union;
16956
+ return `D extends 1 ? ${degraded} : ${expanded}`;
16957
+ }
16958
+ // -------------------------------------------------------------------------
16268
16959
  // Unions
16269
16960
  // -------------------------------------------------------------------------
16270
16961
  /** `TillyPageBlocks` — named per (owner, field) because member sets differ. */
@@ -16274,25 +16965,26 @@ var Emitter = class {
16274
16965
  /**
16275
16966
  * A union member key → the TypeScript type for that branch.
16276
16967
  *
16277
- * The manifest lists member KEYS. A key resolves to a model (whose block form
16278
- * is `<TypeName>Block`) or to one of the eight platform primitives. Anything
16279
- * else is fatal: skipping it would emit a union missing a branch that arrives
16280
- * at runtime, which is precisely the "lie the consumer's generated types
16281
- * cannot recover from" this epic exists to prevent. A loud failure naming the
16282
- * member is the only acceptable behaviour, and it is what makes the static
16283
- * primitive table safe to keep.
16968
+ * The manifest lists member KEYS. A key resolves to a model — as the model's
16969
+ * OWN type, because TTS-1391 removed the per-model wrapper and made a member
16970
+ * the model itself — or to one of the primitives. Anything else is fatal:
16971
+ * skipping it would emit a union missing a branch that arrives at runtime,
16972
+ * which is precisely the "lie the consumer's generated types cannot recover
16973
+ * from" this epic exists to prevent. A loud failure naming the member is the
16974
+ * only acceptable behaviour, and it is what makes the static primitive table
16975
+ * safe to keep.
16284
16976
  */
16285
16977
  unionMemberType(ownerKey, fieldKey, memberKey) {
16286
- const primitive = BLOCK_PRIMITIVE_TS[memberKey];
16978
+ const primitive = ITEM_PRIMITIVE_TS[memberKey];
16287
16979
  if (primitive) {
16288
16980
  this.imports.add(primitive);
16289
- if (primitive === "ReferenceBlock") return `ReferenceBlock<${this.recordRefType()}>`;
16981
+ if (primitive === "Reference") return `Reference<${this.recordRefType()}>`;
16290
16982
  return primitive;
16291
16983
  }
16292
16984
  const model = this.manifest.models?.[memberKey];
16293
- if (model) return `${model.typeName}Block`;
16985
+ if (model) return model.typeName;
16294
16986
  throw new FoirTypesGenerationError(
16295
- `union ${ownerKey}.${fieldKey} has member "${memberKey}", which is neither a model in this manifest nor one of the known block primitives (${Object.keys(BLOCK_PRIMITIVE_TS).sort().join(", ")}). Emitting the union without it would produce a branch-less \`switch\` at runtime, so this is fatal. If the platform added a primitive, add it to BLOCK_PRIMITIVE_TS and to packages/sdk/src/data/builtins.ts.`
16987
+ `union ${ownerKey}.${fieldKey} has member "${memberKey}", which is neither a model in this manifest nor one of the known primitives (${Object.keys(ITEM_PRIMITIVE_TS).sort().join(", ")}). Emitting the union without it would produce a branch-less \`switch\` at runtime, so this is fatal.` + (RETIRED_PRIMITIVES.has(memberKey) ? ` "${memberKey}" is a RETIRED primitive: the platform stopped serving it at TTS-1391/1406, so this manifest predates that. Re-read it \u2014 \`foir push\` then \`foir types\` against the live surface \u2014 rather than pinning an old capture.` : ` If the platform added a primitive, add it to ITEM_PRIMITIVE_TS and to packages/sdk/src/data/builtins.ts.`)
16296
16988
  );
16297
16989
  }
16298
16990
  /**
@@ -16358,7 +17050,7 @@ var Emitter = class {
16358
17050
  ` * key \u2014 see the projections at the end of the file.`
16359
17051
  ] : [],
16360
17052
  ` */`,
16361
- `export type ${this.unionTypeName(model, fieldKey)} =`,
17053
+ `export type ${this.unionTypeName(model, fieldKey)}${this.depthParam(this.depth.unions.has(`${key}.${fieldKey}`))} =`,
16362
17054
  ...indent(unionLines(branches)),
16363
17055
  ";",
16364
17056
  ""
@@ -16370,7 +17062,9 @@ var Emitter = class {
16370
17062
  ` *`,
16371
17063
  ` * A union reached from inside a union member is already on the compiler's`,
16372
17064
  ` * path, so it emits no fragments at all \u2014 just \`__typename\`, which still`,
16373
- ` * resolves to the concrete member. Nothing else arrives.`,
17065
+ ` * resolves to the concrete member. Nothing else arrives BY DEFAULT: a call`,
17066
+ ` * passing \`{ depth: 2 }\` expands this position, and the values are then read`,
17067
+ ` * by narrowing to \`${this.unionTypeName(model, fieldKey)}\` above.`,
16374
17068
  ` */`,
16375
17069
  `export type ${this.degradedUnionName(model, fieldKey)} = FoirDegraded<`,
16376
17070
  ...indent(unionLines(this.memberTypenames(key, fieldKey, sorted).map(quote))),
@@ -16393,10 +17087,10 @@ var Emitter = class {
16393
17087
  * the type it is an instance of.
16394
17088
  */
16395
17089
  memberTypename(ownerKey, fieldKey, memberKey) {
16396
- const primitive = BLOCK_PRIMITIVE_TS[memberKey];
17090
+ const primitive = ITEM_PRIMITIVE_TS[memberKey];
16397
17091
  if (primitive) return primitive;
16398
17092
  const model = this.manifest.models?.[memberKey];
16399
- if (model) return `${model.typeName}Block`;
17093
+ if (model) return model.typeName;
16400
17094
  throw new FoirTypesGenerationError(
16401
17095
  `union ${ownerKey}.${fieldKey} has unknown member "${memberKey}"`
16402
17096
  );
@@ -16417,7 +17111,8 @@ var Emitter = class {
16417
17111
  const unionName = this.unionRefs.get(`${ownerKey}.${fieldKey}`);
16418
17112
  if (!unionName) return [];
16419
17113
  const typeName = this.memberTypename(ownerKey, fieldKey, memberKey);
16420
- return this.aliasIndex.get(unionName)?.get(typeName) ?? [];
17114
+ const index = this.aliasIndex.get(unionName);
17115
+ return index?.get(typeName) ?? index?.get(`${typeName}Block`) ?? [];
16421
17116
  }
16422
17117
  /**
16423
17118
  * The branch this member contributes: its own type, or a projection of it.
@@ -16428,18 +17123,51 @@ var Emitter = class {
16428
17123
  */
16429
17124
  unionBranch(ownerKey, fieldKey, memberKey) {
16430
17125
  const base = this.unionMemberType(ownerKey, fieldKey, memberKey);
17126
+ const arg = this.depthArg(
17127
+ this.depth.models.has(memberKey),
17128
+ this.cutArg(memberKey, "true")
17129
+ );
17130
+ const typeNameOf = this.memberTypename(ownerKey, fieldKey, memberKey);
16431
17131
  const fields = this.memberRenames(ownerKey, fieldKey, memberKey);
16432
- if (!fields.length) return base;
17132
+ if (!fields.length) return this.withDiscriminant(`${base}${arg}`, typeNameOf);
17133
+ const plain = this.depthArg(this.depth.models.has(memberKey));
16433
17134
  const unionName = this.unionRefs.get(`${ownerKey}.${fieldKey}`);
16434
17135
  const typeName = this.memberTypename(ownerKey, fieldKey, memberKey);
16435
17136
  const name = `${pascal(unionName)}${typeName}`;
16436
- if (this.modelKeys.some((k) => `${this.manifest.models[k]?.typeName}Block` === name)) {
17137
+ if (this.modelKeys.some((k) => this.manifest.models[k]?.typeName === name)) {
16437
17138
  throw new FoirTypesGenerationError(
16438
- `union "${unionName}" renames fields on member "${typeName}", and the projection type "${name}" collides with a block type generated from a model. Rename the model, or the field on one member so the union does not have to alias it.`
17139
+ `union "${unionName}" renames fields on member "${typeName}", and the projection type "${name}" collides with a type generated from a model. Rename the model, or the field on one member so the union does not have to alias it.`
16439
17140
  );
16440
17141
  }
16441
- this.projections.set(name, { name, base, typeName, unionName, fields });
16442
- return name;
17142
+ this.projections.set(name, {
17143
+ name,
17144
+ base,
17145
+ baseArg: arg,
17146
+ typeName,
17147
+ unionName,
17148
+ fields,
17149
+ generic: plain !== ""
17150
+ });
17151
+ return this.withDiscriminant(`${name}${plain}`, typeName);
17152
+ }
17153
+ /**
17154
+ * A union branch: the member type, with `__typename` GUARANTEED.
17155
+ *
17156
+ * The member is the model's own interface (TTS-1391), and that interface does
17157
+ * not declare `__typename` — the op compiler selects it on a union's own
17158
+ * selection set and nowhere else, so promising it at a plain `page.hero`
17159
+ * would promise a key that never arrives.
17160
+ *
17161
+ * An intersection states both facts at once without minting a type: the
17162
+ * model, plus the discriminant this POSITION guarantees. It is also what the
17163
+ * narrowing surface requires — `IsPolymorphic` and the `on` machinery in
17164
+ * `@foir/sdk/data` are written as `U extends { __typename: infer T }`, and an
17165
+ * OPTIONAL key does not satisfy that, so a union of bare models would stop
17166
+ * being recognised as polymorphic and `pick: { on: … }` would silently vanish
17167
+ * from the typed surface.
17168
+ */
17169
+ withDiscriminant(branch, typeName) {
17170
+ return `(${branch} & { __typename: ${quote(typeName)} })`;
16443
17171
  }
16444
17172
  /**
16445
17173
  * Re-declare each renamed member with the union's response keys.
@@ -16468,11 +17196,15 @@ var Emitter = class {
16468
17196
  ` *`,
16469
17197
  ` * \`${p.typeName}\` still names the shape outside this union.`,
16470
17198
  ` */`,
16471
- `export type ${p.name} = Omit<`,
16472
- ` ${p.base},`,
17199
+ `export type ${p.name}${this.depthParam(p.generic)} = Omit<`,
17200
+ ` ${p.base}${p.baseArg},`,
16473
17201
  ...indent(unionLines(p.fields.map((f) => quote(f.key))), " "),
16474
17202
  `> & {`,
16475
- ...indent(p.fields.map((f) => `${propKey(f.alias)}: ${p.base}[${quote(f.key)}];`)),
17203
+ ...indent(
17204
+ p.fields.map(
17205
+ (f) => `${propKey(f.alias)}: ${p.base}${p.baseArg}[${quote(f.key)}];`
17206
+ )
17207
+ ),
16476
17208
  `};`,
16477
17209
  ""
16478
17210
  );
@@ -16509,6 +17241,8 @@ var Emitter = class {
16509
17241
  for (const key of this.modelKeys) {
16510
17242
  const model = this.manifest.models[key];
16511
17243
  const lines = [];
17244
+ const takesCut = this.cutModels.has(key);
17245
+ const cutHere = takesCut ? this.cutFields.get(key) : void 0;
16512
17246
  for (const scalar of [...model.scalars].sort((a, b) => a.key.localeCompare(b.key))) {
16513
17247
  if (scalar.deprecated) {
16514
17248
  lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
@@ -16521,13 +17255,36 @@ var Emitter = class {
16521
17255
  if (composite.deprecated) {
16522
17256
  lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
16523
17257
  }
16524
- lines.push(`${propKey(composite.key)}: ${this.compositeType(key, composite)};`);
16525
- }
16526
- for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
17258
+ const whole = this.compositeElement(key, composite, false, takesCut ? "C" : "");
17259
+ const element = cutHere?.has(composite.key) ? this.branchOnCut(this.compositeElement(key, composite, true, ""), whole) : whole;
17260
+ if (cutHere?.has(composite.key) && element !== whole) {
17261
+ lines.push(
17262
+ `/** Cut where this model is reached from inside a union member \u2014 only \`__typename\` arrives there. */`
17263
+ );
17264
+ }
16527
17265
  lines.push(
16528
- `${propKey(fieldKey)}: Array<${this.unionTypeName(model, fieldKey)} | null> | null;`
17266
+ `${propKey(composite.key)}: ${wrap(element, { list: composite.list, nullable: composite.nullable })};`
16529
17267
  );
16530
17268
  }
17269
+ for (const structural of [...model.structurals ?? []].sort(
17270
+ (a, b) => a.key.localeCompare(b.key)
17271
+ )) {
17272
+ if (structural.deprecated) {
17273
+ lines.push("/** @deprecated soft-deleted \u2014 still selected, always resolves null. */");
17274
+ }
17275
+ lines.push(`${propKey(structural.key)}: ${this.structuralType(key, structural)};`);
17276
+ }
17277
+ for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
17278
+ const arg = this.depthArg(this.depth.unions.has(`${key}.${fieldKey}`));
17279
+ const whole = `${this.unionTypeName(model, fieldKey)}${arg}`;
17280
+ const element = cutHere?.has(fieldKey) ? this.branchOnCut(`(${this.truncatedUnionType(key, model, fieldKey)})`, whole) : whole;
17281
+ if (cutHere?.has(fieldKey)) {
17282
+ lines.push(
17283
+ `/** Nested union where this model is reached from inside a union member \u2014 \`depth\` buys a level. */`
17284
+ );
17285
+ }
17286
+ lines.push(`${propKey(fieldKey)}: Array<${element} | null> | null;`);
17287
+ }
16531
17288
  const opCount = Object.keys(model.ops ?? {}).length;
16532
17289
  out.push(
16533
17290
  `/**`,
@@ -16535,8 +17292,15 @@ var Emitter = class {
16535
17292
  ` *`,
16536
17293
  ` * Complete: every field below is always returned. Relations are deliberately`,
16537
17294
  ` * absent \u2014 they exist on a result only when \`include\` asked for them.`,
17295
+ ...takesCut ? [
17296
+ ` *`,
17297
+ ` * \`C\` is \`true\` where this shape is reached from inside a union member. The`,
17298
+ ` * compiler stops in front of the fields marked below at that position and`,
17299
+ ` * sends \`__typename\` alone; every other reference resolves it to \`false\` and`,
17300
+ ` * reads exactly what it always did.`
17301
+ ] : [],
16538
17302
  ` */`,
16539
- `export interface ${model.typeName} {`,
17303
+ `export interface ${model.typeName}${this.depthParam(this.depth.models.has(key), takesCut)} {`,
16540
17304
  ...indent(lines),
16541
17305
  `}`,
16542
17306
  ""
@@ -16546,66 +17310,20 @@ var Emitter = class {
16546
17310
  return out;
16547
17311
  }
16548
17312
  /**
16549
- * A block member's fields.
17313
+ * `(C extends true ? <cut> : <whole>)`, or `<whole>` where the two agree.
16550
17314
  *
16551
- * `<Model>Block` is NOT `<Model>`: `BuildBlockTypes` copies block metadata
16552
- * plus only the non-`_`-prefixed, non-deprecated fields of the model type. A
16553
- * branch generated from `models[key].scalars` verbatim would declare every
16554
- * system field the block does not have and miss all three discriminants —
16555
- * measured, and the reason TTS-875 flagged the union as blocked. Relations
16556
- * are excluded for a different reason: a union member is compiled with no
16557
- * `include`, so a relation is never selected inside a block.
17315
+ * PARENTHESISED, and it has to be. A conditional type binds looser than `|`,
17316
+ * so `Array<C extends true ? A : B | null>` is `Array<C extends true ? A :
17317
+ * (B | null)>` — the nullability silently moves onto one arm. The wrapper
17318
+ * this is handed to appends `| null`.
17319
+ *
17320
+ * The collapse is not cosmetic either. `menu_item.children` is cut below a
17321
+ * union member AND cut by `compositeCycleMembers` at the model position, so
17322
+ * both arms are `FoirDegraded` — emitting the conditional would put a
17323
+ * parameter on `MenuItem` that no reference could ever make a difference with.
16558
17324
  */
16559
- blockMemberFields(key, model) {
16560
- const lines = [];
16561
- const isPublic = (k, deprecated) => !k.startsWith("_") && !deprecated;
16562
- for (const scalar of [...model.scalars].sort((a, b) => a.key.localeCompare(b.key))) {
16563
- if (!isPublic(scalar.key, scalar.deprecated)) continue;
16564
- lines.push(`${propKey(scalar.key)}: ${this.scalarType(key, scalar)};`);
16565
- }
16566
- for (const composite of [...model.composites ?? []].sort(
16567
- (a, b) => a.key.localeCompare(b.key)
16568
- )) {
16569
- if (!isPublic(composite.key, composite.deprecated)) continue;
16570
- lines.push(`${propKey(composite.key)}: ${this.compositeType(key, composite)};`);
16571
- }
16572
- for (const fieldKey of Object.keys(model.unions ?? {}).sort()) {
16573
- if (!isPublic(fieldKey)) continue;
16574
- lines.push(
16575
- `/** Nested union \u2014 the compiler stops at the cycle and sends only \`__typename\`. */`,
16576
- `${propKey(fieldKey)}: Array<${this.degradedUnionName(model, fieldKey)} | null> | null;`
16577
- );
16578
- }
16579
- return lines;
16580
- }
16581
- emitBlockMembers() {
16582
- const needed = /* @__PURE__ */ new Set();
16583
- for (const key of this.modelKeys) {
16584
- for (const members of Object.values(this.manifest.models[key]?.unions ?? {})) {
16585
- for (const m of members) if (!BLOCK_PRIMITIVE_TS[m]) needed.add(m);
16586
- }
16587
- }
16588
- if (!needed.size) return [];
16589
- this.imports.add("FoirBlockMeta");
16590
- const out = [];
16591
- for (const key of [...needed].sort()) {
16592
- const model = this.manifest.models?.[key];
16593
- if (!model) continue;
16594
- const blockName = `${model.typeName}Block`;
16595
- if (Object.values(BLOCK_PRIMITIVE_TS).includes(blockName)) {
16596
- throw new FoirTypesGenerationError(
16597
- `model "${key}" generates block type "${blockName}", which collides with a platform block primitive. The platform rejects such model keys at create time; this manifest should not have been servable.`
16598
- );
16599
- }
16600
- out.push(
16601
- `/** \`${key}\` as a block-union member. \`_type\` is the model key. */`,
16602
- `export interface ${blockName} extends FoirBlockMeta<${quote(key)}, ${quote(blockName)}> {`,
16603
- ...indent(this.blockMemberFields(key, model)),
16604
- `}`,
16605
- ""
16606
- );
16607
- }
16608
- return out;
17325
+ branchOnCut(cut, whole) {
17326
+ return cut === whole ? whole : `(C extends true ? ${cut} : ${whole})`;
16609
17327
  }
16610
17328
  // -------------------------------------------------------------------------
16611
17329
  // orderBy — the one per-model argument the manifest closes
@@ -16759,10 +17477,16 @@ var Emitter = class {
16759
17477
  `};`
16760
17478
  );
16761
17479
  }
17480
+ const depthLines = this.depth.models.has(key) ? [
17481
+ ` atDepth: {`,
17482
+ ...TYPED_DEPTH_LEVELS.map((d) => ` ${d}: ${model.typeName}<${d}>;`),
17483
+ ` };`
17484
+ ] : [];
16762
17485
  modelLines.push(
16763
17486
  `${propKey(key)}: {`,
16764
17487
  ` typeName: ${quote(model.typeName)};`,
16765
17488
  ` fields: ${model.typeName};`,
17489
+ ...depthLines,
16766
17490
  ...relationLines.length ? [" relations: {", ...indent(relationLines, " "), " };"] : [" relations: Record<never, never>;"],
16767
17491
  ...opLines.length ? [" ops: {", ...indent(opLines, " "), " };"] : (
16768
17492
  // An embedded model, or a record model no op of which survived pruning.
@@ -16913,6 +17637,199 @@ function compositeCycleMembers(manifest) {
16913
17637
  for (const [key, seen] of reach) if (seen.has(key)) cyclic.add(key);
16914
17638
  return cyclic;
16915
17639
  }
17640
+ function proseEntryUnions(manifest) {
17641
+ const out = /* @__PURE__ */ new Map();
17642
+ const keyByMemberName = modelKeyByMemberName(manifest);
17643
+ const seen = /* @__PURE__ */ new Set();
17644
+ const walk = (ownerKey, fields) => {
17645
+ const model = manifest.models?.[ownerKey];
17646
+ if (!model) return;
17647
+ const guard = `${ownerKey}|${fields.length}`;
17648
+ if (seen.has(guard)) return;
17649
+ seen.add(guard);
17650
+ const structurals = new Set((model.structurals ?? []).map((s) => s.key));
17651
+ const composites = new Map((model.composites ?? []).map((c) => [c.key, c.target]));
17652
+ for (const field of fields) {
17653
+ if (field.truncated) continue;
17654
+ if (structurals.has(field.key)) {
17655
+ const entries = (field.fields ?? []).find((f) => f.key === "entries");
17656
+ if (entries?.union) out.set(`${ownerKey}.${field.key}`, entries.union);
17657
+ continue;
17658
+ }
17659
+ const target = composites.get(field.key);
17660
+ if (target && field.fields?.length) walk(target, field.fields);
17661
+ }
17662
+ };
17663
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17664
+ if (model?.selection?.fields) walk(key, model.selection.fields);
17665
+ }
17666
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17667
+ for (const member of union?.members ?? []) {
17668
+ const key = keyByMemberName.get(member.typeName);
17669
+ if (key) walk(key, member.fields ?? []);
17670
+ }
17671
+ }
17672
+ return out;
17673
+ }
17674
+ function modelKeyByMemberName(manifest) {
17675
+ const out = /* @__PURE__ */ new Map();
17676
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17677
+ if (!model?.typeName) continue;
17678
+ out.set(model.typeName, key);
17679
+ }
17680
+ for (const [key, model] of Object.entries(manifest.models ?? {})) {
17681
+ if (!model?.typeName) continue;
17682
+ const legacy = `${model.typeName}Block`;
17683
+ if (!out.has(legacy)) out.set(legacy, key);
17684
+ }
17685
+ return out;
17686
+ }
17687
+ function truncatedBlockComposites(manifest) {
17688
+ const keyByMemberName = modelKeyByMemberName(manifest);
17689
+ const out = /* @__PURE__ */ new Map();
17690
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17691
+ for (const member of union?.members ?? []) {
17692
+ const key = keyByMemberName.get(member.typeName);
17693
+ if (!key) continue;
17694
+ const composites = new Set((manifest.models[key]?.composites ?? []).map((c) => c.key));
17695
+ for (const field of member.fields ?? []) {
17696
+ if (!field.truncated || field.union || !composites.has(field.key)) continue;
17697
+ let set = out.get(key);
17698
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17699
+ set.add(field.key);
17700
+ }
17701
+ }
17702
+ }
17703
+ return out;
17704
+ }
17705
+ function blockCutFields(manifest) {
17706
+ const keyByMemberName = modelKeyByMemberName(manifest);
17707
+ const out = /* @__PURE__ */ new Map();
17708
+ const walk = (key, fields, below) => {
17709
+ const model = manifest.models?.[key];
17710
+ if (!model) return;
17711
+ const composites = new Map((model.composites ?? []).map((c) => [c.key, c]));
17712
+ const unions = new Set(Object.keys(model.unions ?? {}));
17713
+ for (const field of fields) {
17714
+ if (field.truncated) {
17715
+ if (below && (unions.has(field.key) || composites.has(field.key))) {
17716
+ let set = out.get(key);
17717
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17718
+ set.add(field.key);
17719
+ }
17720
+ continue;
17721
+ }
17722
+ const composite = composites.get(field.key);
17723
+ if (!composite || !field.fields?.length) continue;
17724
+ walk(composite.target, field.fields, true);
17725
+ }
17726
+ };
17727
+ for (const union of Object.values(manifest.selectionUnions ?? {})) {
17728
+ for (const member of union?.members ?? []) {
17729
+ const key = keyByMemberName.get(member.typeName);
17730
+ if (!key) continue;
17731
+ walk(key, member.fields ?? [], true);
17732
+ }
17733
+ }
17734
+ const models = manifest.models ?? {};
17735
+ const memberKeys = /* @__PURE__ */ new Set();
17736
+ for (const model of Object.values(models)) {
17737
+ for (const members of Object.values(model?.unions ?? {})) {
17738
+ for (const m of members) if (models[m]) memberKeys.add(m);
17739
+ }
17740
+ }
17741
+ for (const key of memberKeys) {
17742
+ for (const fieldKey of Object.keys(models[key]?.unions ?? {})) {
17743
+ if (fieldKey.startsWith("_")) continue;
17744
+ let set = out.get(key);
17745
+ if (!set) out.set(key, set = /* @__PURE__ */ new Set());
17746
+ set.add(fieldKey);
17747
+ }
17748
+ }
17749
+ return out;
17750
+ }
17751
+ function cutReach(manifest, cuts = blockCutFields(manifest)) {
17752
+ const models = manifest.models ?? {};
17753
+ const cyclic = compositeCycleMembers(manifest);
17754
+ const cycleCut = (ownerKey, target) => cyclic.has(ownerKey) && cyclic.has(target);
17755
+ const out = /* @__PURE__ */ new Set();
17756
+ for (const [key, fields] of cuts) {
17757
+ const model = models[key];
17758
+ if (!model) continue;
17759
+ for (const field of fields) {
17760
+ if (model.unions?.[field]) {
17761
+ out.add(key);
17762
+ break;
17763
+ }
17764
+ const composite = (model.composites ?? []).find((c) => c.key === field);
17765
+ if (composite && !cycleCut(key, composite.target)) {
17766
+ out.add(key);
17767
+ break;
17768
+ }
17769
+ }
17770
+ }
17771
+ let changed = true;
17772
+ while (changed) {
17773
+ changed = false;
17774
+ for (const [key, model] of Object.entries(models)) {
17775
+ if (out.has(key)) continue;
17776
+ if ((model.composites ?? []).some((c) => out.has(c.target) && !cycleCut(key, c.target))) {
17777
+ out.add(key);
17778
+ changed = true;
17779
+ }
17780
+ }
17781
+ }
17782
+ return out;
17783
+ }
17784
+ function depthReach(manifest, truncated = truncatedBlockComposites(manifest), cut = cutReach(manifest)) {
17785
+ const models = manifest.models ?? {};
17786
+ const isPublic = (k, deprecated) => !k.startsWith("_") && !deprecated;
17787
+ const cyclic = compositeCycleMembers(manifest);
17788
+ const isCut = (ownerKey, composite) => (truncated.get(ownerKey)?.has(composite.key) ?? false) || cyclic.has(ownerKey) && cyclic.has(composite.target);
17789
+ const blocks = /* @__PURE__ */ new Set();
17790
+ const unions = /* @__PURE__ */ new Set();
17791
+ const modelIfaces = new Set(cut);
17792
+ for (const [key, model] of Object.entries(models)) {
17793
+ if (Object.keys(model.unions ?? {}).some((fk) => isPublic(fk))) blocks.add(key);
17794
+ }
17795
+ let changed = true;
17796
+ while (changed) {
17797
+ changed = false;
17798
+ for (const [key, model] of Object.entries(models)) {
17799
+ for (const [fieldKey, members] of Object.entries(model.unions ?? {})) {
17800
+ const id = `${key}.${fieldKey}`;
17801
+ if (unions.has(id)) continue;
17802
+ if (members.some((m) => blocks.has(m))) {
17803
+ unions.add(id);
17804
+ changed = true;
17805
+ }
17806
+ }
17807
+ }
17808
+ for (const [key, model] of Object.entries(models)) {
17809
+ if (!modelIfaces.has(key)) {
17810
+ const viaUnion = Object.keys(model.unions ?? {}).some((fk) => unions.has(`${key}.${fk}`));
17811
+ const viaComposite = (model.composites ?? []).some(
17812
+ (c) => modelIfaces.has(c.target) && !(cyclic.has(key) && cyclic.has(c.target))
17813
+ );
17814
+ if (viaUnion || viaComposite) {
17815
+ modelIfaces.add(key);
17816
+ changed = true;
17817
+ }
17818
+ }
17819
+ if (!blocks.has(key) && (model.composites ?? []).some(
17820
+ (c) => isPublic(c.key, c.deprecated) && modelIfaces.has(c.target) && !isCut(key, c)
17821
+ )) {
17822
+ blocks.add(key);
17823
+ changed = true;
17824
+ }
17825
+ if (blocks.has(key) && !modelIfaces.has(key)) {
17826
+ modelIfaces.add(key);
17827
+ changed = true;
17828
+ }
17829
+ }
17830
+ }
17831
+ return { models: modelIfaces, blocks, unions };
17832
+ }
16916
17833
 
16917
17834
  // src/commands/types.ts
16918
17835
  var DEFAULT_OUT = "src/foir.generated.ts";
@@ -17331,6 +18248,399 @@ function registerMcpCommand(program2, globalOpts) {
17331
18248
  );
17332
18249
  }
17333
18250
 
18251
+ // src/commands/chat.ts
18252
+ import chalk22 from "chalk";
18253
+ import inquirer10 from "inquirer";
18254
+
18255
+ // ../../packages/assistant/src/transport.ts
18256
+ import { DefaultChatTransport } from "ai";
18257
+ function hasScreenContext(ctx) {
18258
+ return ctx != null && Boolean(ctx.route || ctx.subjectType || ctx.subjectId || ctx.subjectTitle);
18259
+ }
18260
+ function formatScreenContext(ctx, routeCapabilityHint) {
18261
+ if (!hasScreenContext(ctx) || !ctx) return null;
18262
+ const lines = [];
18263
+ if (ctx.route) lines.push(`route: ${ctx.route}`);
18264
+ if (ctx.subjectType) lines.push(`subjectType: ${ctx.subjectType}`);
18265
+ if (ctx.subjectId) lines.push(`subjectId: ${ctx.subjectId}`);
18266
+ if (ctx.subjectTitle) lines.push(`subjectTitle: ${ctx.subjectTitle}`);
18267
+ let note = `Current admin screen (read-only context):
18268
+ ${lines.map((l) => `- ${l}`).join("\n")}`;
18269
+ const hint2 = ctx.route ? routeCapabilityHint(ctx.route) : null;
18270
+ if (hint2) note += `
18271
+ Tools for this screen: ${hint2}`;
18272
+ return note;
18273
+ }
18274
+ function injectScreenContext(messages, ctx, trigger, routeCapabilityHint) {
18275
+ if (trigger !== "submit-message") return messages;
18276
+ const note = formatScreenContext(ctx, routeCapabilityHint);
18277
+ if (!note) return messages;
18278
+ const lastUserIndex = findLastUserIndex(messages);
18279
+ if (lastUserIndex < 0) return messages;
18280
+ return messages.map((message, index) => {
18281
+ if (index !== lastUserIndex) return message;
18282
+ return {
18283
+ ...message,
18284
+ parts: [...message.parts, { type: "text", text: note }]
18285
+ };
18286
+ });
18287
+ }
18288
+ function findLastUserIndex(messages) {
18289
+ for (let i = messages.length - 1; i >= 0; i -= 1) {
18290
+ if (messages[i]?.role === "user") return i;
18291
+ }
18292
+ return -1;
18293
+ }
18294
+ async function buildChatRequestBody(args) {
18295
+ const workingToken = await args.getWorkingToken();
18296
+ const surface = args.body?.surface ?? args.defaultSurface;
18297
+ const screenContext = args.getScreenContext();
18298
+ const wireMessages = injectScreenContext(
18299
+ args.messages,
18300
+ screenContext,
18301
+ args.trigger,
18302
+ args.routeCapabilityHint
18303
+ );
18304
+ return {
18305
+ ...args.body,
18306
+ messages: wireMessages,
18307
+ workingToken,
18308
+ surface,
18309
+ screenContext
18310
+ };
18311
+ }
18312
+ function createAssistantTransport(options) {
18313
+ const defaultSurface = options.defaultSurface ?? "panel";
18314
+ return new DefaultChatTransport({
18315
+ api: options.api,
18316
+ // The working token is the credential and rides in the body; never send the
18317
+ // admin session cookie to the (cross-origin) assistant host.
18318
+ credentials: "omit",
18319
+ fetch: options.fetch,
18320
+ prepareSendMessagesRequest: async ({ messages, body, trigger }) => ({
18321
+ body: await buildChatRequestBody({
18322
+ messages,
18323
+ body,
18324
+ trigger,
18325
+ getWorkingToken: options.getWorkingToken,
18326
+ getScreenContext: options.getScreenContext,
18327
+ routeCapabilityHint: options.routeCapabilityHint,
18328
+ defaultSurface
18329
+ })
18330
+ })
18331
+ });
18332
+ }
18333
+
18334
+ // src/lib/chat-session.ts
18335
+ import {
18336
+ getToolName,
18337
+ isToolUIPart,
18338
+ readUIMessageStream
18339
+ } from "ai";
18340
+ function approvalVerdictsOf(message) {
18341
+ const meta = message.metadata;
18342
+ if (!meta || typeof meta !== "object") return {};
18343
+ const approvals = meta.approvals;
18344
+ if (!approvals || typeof approvals !== "object") return {};
18345
+ return approvals;
18346
+ }
18347
+ function pendingApprovalsOf(message) {
18348
+ const verdicts = approvalVerdictsOf(message);
18349
+ const pending = [];
18350
+ for (const part of message.parts) {
18351
+ if (!isToolUIPart(part) || part.state !== "approval-requested") continue;
18352
+ const verdict = verdicts[part.toolCallId];
18353
+ pending.push({
18354
+ approvalId: part.approval.id,
18355
+ toolName: getToolName(part),
18356
+ input: part.input,
18357
+ verdict: verdict === "gated" || verdict === "destructive" ? verdict : void 0
18358
+ });
18359
+ }
18360
+ return pending;
18361
+ }
18362
+ function applyApprovalDecisions(message, decisions) {
18363
+ return {
18364
+ ...message,
18365
+ parts: message.parts.map((part) => {
18366
+ if (!isToolUIPart(part) || part.state !== "approval-requested") return part;
18367
+ const approved = decisions.get(part.approval.id);
18368
+ if (approved === void 0) return part;
18369
+ return {
18370
+ ...part,
18371
+ state: "approval-responded",
18372
+ approval: { ...part.approval, approved }
18373
+ };
18374
+ })
18375
+ };
18376
+ }
18377
+ function newId(prefix) {
18378
+ return `${prefix}_${globalThis.crypto.randomUUID()}`;
18379
+ }
18380
+ async function runTurn(options) {
18381
+ const {
18382
+ transport,
18383
+ chatId,
18384
+ renderer,
18385
+ approvalPrompt,
18386
+ abortSignal,
18387
+ maxApprovalRounds = 8
18388
+ } = options;
18389
+ let messages = [...options.messages];
18390
+ if (options.text !== void 0) {
18391
+ messages.push({
18392
+ id: newId("msg"),
18393
+ role: "user",
18394
+ parts: [{ type: "text", text: options.text }]
18395
+ });
18396
+ }
18397
+ for (let round = 0; round <= maxApprovalRounds; round++) {
18398
+ const assistant = await streamOneResponse({
18399
+ transport,
18400
+ chatId,
18401
+ messages,
18402
+ renderer,
18403
+ abortSignal
18404
+ });
18405
+ messages = [...messages, assistant];
18406
+ const pending = pendingApprovalsOf(assistant);
18407
+ if (pending.length === 0) return messages;
18408
+ if (round === maxApprovalRounds) return messages;
18409
+ const decisions = await approvalPrompt(pending);
18410
+ if (decisions.size === 0) return messages;
18411
+ messages = [
18412
+ ...messages.slice(0, -1),
18413
+ applyApprovalDecisions(assistant, decisions)
18414
+ ];
18415
+ }
18416
+ return messages;
18417
+ }
18418
+ async function streamOneResponse(args) {
18419
+ const last = args.messages[args.messages.length - 1];
18420
+ const stream = await args.transport.sendMessages({
18421
+ trigger: "submit-message",
18422
+ chatId: args.chatId,
18423
+ messageId: last?.id,
18424
+ messages: args.messages,
18425
+ abortSignal: args.abortSignal ?? new AbortController().signal,
18426
+ headers: void 0,
18427
+ body: void 0,
18428
+ metadata: void 0
18429
+ });
18430
+ let latest;
18431
+ let printedText = "";
18432
+ const toolStates = /* @__PURE__ */ new Map();
18433
+ for await (const snapshot of readUIMessageStream({ stream })) {
18434
+ latest = snapshot;
18435
+ const text = snapshot.parts.filter((p) => p.type === "text").map((p) => p.text).join("");
18436
+ if (text.length > printedText.length && text.startsWith(printedText)) {
18437
+ args.renderer?.onTextDelta?.(text.slice(printedText.length));
18438
+ printedText = text;
18439
+ }
18440
+ for (const part of snapshot.parts) {
18441
+ if (!isToolUIPart(part)) continue;
18442
+ if (toolStates.get(part.toolCallId) === part.state) continue;
18443
+ toolStates.set(part.toolCallId, part.state);
18444
+ args.renderer?.onToolUpdate?.({
18445
+ toolCallId: part.toolCallId,
18446
+ toolName: getToolName(part),
18447
+ input: part.input,
18448
+ state: part.state,
18449
+ errorText: "errorText" in part ? part.errorText : void 0
18450
+ });
18451
+ }
18452
+ }
18453
+ if (!latest) {
18454
+ throw new Error("The assistant closed the connection without replying.");
18455
+ }
18456
+ return latest;
18457
+ }
18458
+
18459
+ // src/commands/chat.ts
18460
+ var DEFAULT_ASSISTANT_URL = "https://assistant.foir.io";
18461
+ function resolveAssistantUrl(urlFlag) {
18462
+ return urlFlag ?? process.env.FOIR_ASSISTANT_URL ?? DEFAULT_ASSISTANT_URL;
18463
+ }
18464
+ function sessionTokenProvider(client, tenantId, projectId) {
18465
+ let token = "";
18466
+ let expiresAtMillis = 0;
18467
+ return async () => {
18468
+ if (token && Date.now() < expiresAtMillis - 12e4) return token;
18469
+ const resp = await client.identity.mintMcpWorkingToken({
18470
+ tenantId,
18471
+ projectId
18472
+ });
18473
+ token = resp.workingToken;
18474
+ expiresAtMillis = resp.expiresAt ? resp.expiresAt.getTime() : Date.now() + 30 * 6e4;
18475
+ return token;
18476
+ };
18477
+ }
18478
+ function describeInput(input) {
18479
+ if (!input || typeof input !== "object") return "";
18480
+ const record = input;
18481
+ for (const field of ["key", "model_key", "modelKey", "id", "action"]) {
18482
+ const value = record[field];
18483
+ if (typeof value === "string" && value.trim() !== "") {
18484
+ return value.length > 40 ? `${value.slice(0, 40)}\u2026` : value;
18485
+ }
18486
+ }
18487
+ return "";
18488
+ }
18489
+ function terminalRenderer() {
18490
+ const seen = /* @__PURE__ */ new Set();
18491
+ return {
18492
+ onTextDelta: (delta) => process.stdout.write(delta),
18493
+ onToolUpdate: (t) => {
18494
+ const target = describeInput(t.input);
18495
+ const label = target ? `${t.toolName} ${chalk22.dim(target)}` : t.toolName;
18496
+ if (t.state === "output-error") {
18497
+ process.stderr.write(
18498
+ `
18499
+ ${chalk22.red("\u2717")} ${label} ${chalk22.red(t.errorText ?? "failed")}
18500
+ `
18501
+ );
18502
+ return;
18503
+ }
18504
+ if (t.state === "output-available") {
18505
+ process.stderr.write(`
18506
+ ${chalk22.green("\u2713")} ${label}
18507
+ `);
18508
+ return;
18509
+ }
18510
+ if (!seen.has(t.toolCallId)) {
18511
+ seen.add(t.toolCallId);
18512
+ process.stderr.write(`
18513
+ ${chalk22.cyan("\u2192")} ${label}\u2026
18514
+ `);
18515
+ }
18516
+ }
18517
+ };
18518
+ }
18519
+ function makeApprovalPrompt(ask = inquirer10.prompt) {
18520
+ return async (pending) => {
18521
+ const decisions = /* @__PURE__ */ new Map();
18522
+ const bulk = pending.filter((p) => p.verdict === "gated");
18523
+ const individual = pending.filter((p) => p.verdict !== "gated");
18524
+ if (bulk.length > 1) {
18525
+ const names = [...new Set(bulk.map((p) => p.toolName))].join(", ");
18526
+ const { approveAll } = await ask([
18527
+ {
18528
+ type: "confirm",
18529
+ name: "approveAll",
18530
+ message: `F\xF3ir wants to run ${bulk.length} routine changes (${names}). Approve all?`,
18531
+ default: false
18532
+ }
18533
+ ]);
18534
+ for (const p of bulk) decisions.set(p.approvalId, approveAll);
18535
+ } else {
18536
+ individual.unshift(...bulk);
18537
+ }
18538
+ for (const p of individual) {
18539
+ const target = describeInput(p.input);
18540
+ const destructive = p.verdict !== "gated";
18541
+ const { approved } = await ask([
18542
+ {
18543
+ type: "confirm",
18544
+ name: "approved",
18545
+ message: `${destructive ? chalk22.yellow("Destructive:") : "Run"} ${p.toolName}${target ? ` (${target})` : ""}?`,
18546
+ default: false
18547
+ }
18548
+ ]);
18549
+ decisions.set(p.approvalId, approved);
18550
+ }
18551
+ return decisions;
18552
+ };
18553
+ }
18554
+ function registerChatCommand(program2, globalOpts) {
18555
+ program2.command("chat").description("Talk to F\xF3ir in the terminal, with your own permissions").option(
18556
+ "--url <url>",
18557
+ "assistant endpoint (defaults to FOIR_ASSISTANT_URL, then the hosted endpoint)"
18558
+ ).option(
18559
+ "-p, --prompt <text>",
18560
+ "send one message and exit, instead of opening an interactive session"
18561
+ ).action(
18562
+ withErrorHandler(
18563
+ globalOpts,
18564
+ async (cmdOpts) => {
18565
+ const options = globalOpts();
18566
+ const credentials = await getCredentials();
18567
+ if (!credentials || isTokenExpired(credentials)) {
18568
+ throw new Error(
18569
+ "`foir chat` acts as you, so it needs a signed-in session. Run `foir login` first."
18570
+ );
18571
+ }
18572
+ const resolved = await resolveProjectContext(options);
18573
+ const client = await createPlatformClient(options);
18574
+ const getWorkingToken = sessionTokenProvider(
18575
+ client,
18576
+ resolved?.project.tenantId,
18577
+ resolved?.project.id
18578
+ );
18579
+ await getWorkingToken();
18580
+ const transport = createAssistantTransport({
18581
+ api: `${resolveAssistantUrl(cmdOpts.url)}/assistant/chat`,
18582
+ getWorkingToken,
18583
+ // A terminal has no screen and no open record, so it sends no screen
18584
+ // context. That is also what keeps the browser-only editor tools out
18585
+ // of the catalogue: the BFF adds them only for an editable screen, so
18586
+ // the CLI is offered exactly what it can execute.
18587
+ getScreenContext: () => null,
18588
+ routeCapabilityHint: () => null,
18589
+ defaultSurface: "cli"
18590
+ });
18591
+ const chatId = `cli_${globalThis.crypto.randomUUID()}`;
18592
+ const approvalPrompt = makeApprovalPrompt();
18593
+ const renderer = terminalRenderer();
18594
+ let messages = [];
18595
+ let controller = new AbortController();
18596
+ const onSigint = () => controller.abort();
18597
+ const runOne = async (text) => {
18598
+ controller = new AbortController();
18599
+ process.on("SIGINT", onSigint);
18600
+ try {
18601
+ messages = await runTurn({
18602
+ transport,
18603
+ chatId,
18604
+ messages,
18605
+ text,
18606
+ renderer,
18607
+ approvalPrompt,
18608
+ abortSignal: controller.signal
18609
+ });
18610
+ process.stdout.write("\n");
18611
+ } catch (err) {
18612
+ if (controller.signal.aborted) {
18613
+ process.stderr.write(chalk22.dim("\n(cancelled)\n"));
18614
+ return;
18615
+ }
18616
+ throw err;
18617
+ } finally {
18618
+ process.off("SIGINT", onSigint);
18619
+ }
18620
+ };
18621
+ if (cmdOpts.prompt) {
18622
+ await runOne(cmdOpts.prompt);
18623
+ return;
18624
+ }
18625
+ const where = resolved?.project.name ? ` in ${chalk22.bold(resolved.project.name)}` : "";
18626
+ process.stderr.write(
18627
+ `${chalk22.bold("F\xF3ir")}${where}. Ctrl-C cancels a turn; Ctrl-D or /exit ends the session.
18628
+ `
18629
+ );
18630
+ for (; ; ) {
18631
+ const { message } = await inquirer10.prompt([
18632
+ { type: "input", name: "message", message: chalk22.cyan("you") }
18633
+ ]);
18634
+ const text = message.trim();
18635
+ if (text === "") continue;
18636
+ if (text === "/exit" || text === "/quit") return;
18637
+ await runOne(text);
18638
+ }
18639
+ }
18640
+ )
18641
+ );
18642
+ }
18643
+
17334
18644
  // src/cli.ts
17335
18645
  var __filename = fileURLToPath(import.meta.url);
17336
18646
  var __dirname = dirname5(__filename);
@@ -17391,4 +18701,5 @@ registerAppsCommands(program, getGlobalOpts);
17391
18701
  registerSecretsCommands(program, getGlobalOpts);
17392
18702
  registerTypesCommand(program, getGlobalOpts);
17393
18703
  registerMcpCommand(program, getGlobalOpts);
18704
+ registerChatCommand(program, getGlobalOpts);
17394
18705
  program.parse();