@eide/foir-cli 0.55.0 → 0.56.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
@@ -487,7 +487,7 @@ import { fileDesc as fileDesc2, messageDesc as messageDesc2 } from "@bufbuild/pr
487
487
  var file_common_v1_pagination = /* @__PURE__ */ fileDesc2("Chpjb21tb24vdjEvcGFnaW5hdGlvbi5wcm90bxIJY29tbW9uLnYxIpABCghQYWdlSW5mbxIVCg1oYXNfbmV4dF9wYWdlGAEgASgIEhkKEWhhc19wcmV2aW91c19wYWdlGAIgASgIEhkKDHN0YXJ0X2N1cnNvchgDIAEoCUgAiAEBEhcKCmVuZF9jdXJzb3IYBCABKAlIAYgBAUIPCg1fc3RhcnRfY3Vyc29yQg0KC19lbmRfY3Vyc29yQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw");
488
488
 
489
489
  // ../../packages/proto-ts/src/identity/v1/identity_pb.js
490
- var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IuAHCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBhRIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGFIgASgISA6IAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQirwMKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiUKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARItCgZzdGF0dXMYFCABKA4yHS5pZGVudGl0eS52MS5JbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdCLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQilgIKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhsKDmVmZmVjdGl2ZV9yb2xlGAQgASgJSAKIAQESLgoRYXZhaWxhYmxlX3RlbmFudHMYBSADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSMAoSYXZhaWxhYmxlX3Byb2plY3RzGAYgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhEKD19lZmZlY3RpdmVfcm9sZSJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrUBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEioKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIHCgVfcm9sZSI4ChBSZWdpc3RlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIwoSVmVyaWZ5RW1haWxSZXF1ZXN0Eg0KBXRva2VuGAEgASgJIiYKE1ZlcmlmeUVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgCh5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiMgofUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjEKIFNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKIVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjUKFlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSI8ChdWZXJpZnlFbWFpbENvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCHZlcmlmaWVkGAIgASgIIiwKG1JlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIvChxSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiOwoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIigKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkcKFVVwZGF0ZVBhc3N3b3JkUmVxdWVzdBIYChBjdXJyZW50X3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIpChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoTUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIkMKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCI1Cg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi1wEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESJQoEcm9sZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfcHJvamVjdF9pZCI/ChdDcmVhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiEKE0dldEFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkiPAoUR2V0QWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLYAQoWVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESFwoKYXZhdGFyX3VybBgEIAEoCUgCiAEBEjEKBnN0YXR1cxgFIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gDiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmxCCQoHX3N0YXR1cyI/ChdVcGRhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIsYBChVMaXN0QWRtaW5Vc2Vyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsUBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKFUxpc3RDdXN0b21lcnNSZXNwb25zZRIkCgVpdGVtcxgBIAMoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZTdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF1N1c3BlbmRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiUwoVTWVyZ2VDdXN0b21lcnNSZXF1ZXN0EhMKC3N1cnZpdm9yX2lkGAEgASgJEhQKDGR1cGxpY2F0ZV9pZBgCIAEoCRIPCgdkcnlfcnVuGAMgASgIImgKFk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USDwoHcmV0aXJlZBgBIAEoCBIMCgRub29wGAIgASgIEi8KBW1vdmVkGAMgASgLMiAuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNNb3ZlZCLLAQoTTWVyZ2VDdXN0b21lcnNNb3ZlZBIPCgdyZWNvcmRzGAEgASgFEg0KBWZpbGVzGAIgASgFEhsKE3Byb3ZpZGVyX2lkZW50aXRpZXMYAyABKAUSEAoIcHJvZmlsZXMYBCABKAUSDgoGc2hhcmVzGAUgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIs8BCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiIwoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJIjsKFENyZWF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJ4ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIuCgZzdGF0dXMYAyABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAYgBAUIHCgVfbmFtZUIJCgdfc3RhdHVzIjsKFFVwZGF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCLDAQoSTGlzdFRlbmFudHNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKUAQoTTGlzdFRlbmFudHNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIQoTRGVsZXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVUZW5hbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqEHChRDcmVhdGVQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEQoJdGVuYW50X2lkGAMgASgJEiAKE2RlZmF1bHRfbG9jYWxlX2NvZGUYBCABKAlIAYgBARIoChtkZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWUYBSABKAlIAogBARInChpkZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZRgGIAEoCUgDiAEBEiIKFWRlZmF1bHRfbG9jYWxlX2lzX3J0bBgHIAEoCEgEiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgFiAEBEhUKCGxvZ29fdXJsGAsgASgJSAaIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgHiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgIiAEBEhUKCHJlcGx5X3RvGA4gASgJSAmIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgKiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISA2IAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgOiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA+IAQFCDgoMX2Rlc2NyaXB0aW9uQhYKFF9kZWZhdWx0X2xvY2FsZV9jb2RlQh4KHF9kZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWVCHQobX2RlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lQhgKFl9kZWZhdWx0X2xvY2FsZV9pc19ydGxCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLaBQoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgMiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA2IAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0ItcBChNMaXN0UHJvamVjdHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEiMKBWl0ZW1zGAEgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiLaAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKF1Jldm9rZUludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiTAoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiVAoYQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISEgoKc2Vzc2lvbl9pZBgCIAEoCSIqChlWYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIkkKGlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIrYCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQFCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IskBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqQBChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJGChdHZXRBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciKBAgoZQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoHZW5hYmxlZBgFIAEoCEgAiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIAYgBARIVCghwcmlvcml0eRgHIAEoBUgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eUIMCgpfY29uZmlnX2lkIkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLaAgoTQXV0aFByb3ZpZGVyVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBhdXRoX3Byb3ZpZGVyX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKwodR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUwoeR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEjEKB3ZlcnNpb24YASABKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uIrMBCh9MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0EhgKEGF1dGhfcHJvdmlkZXJfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisQEKIExpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEjIKCHZlcnNpb25zGAEgAygLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ibwohUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKIAQoiUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchI1CgtuZXdfdmVyc2lvbhgCIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iqAEKIlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUgojU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiNwopQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiWQoqQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIh4KHEVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIioKF01pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0Eg8KB3B1cnBvc2UYASABKAkiTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMAobU3VzcGVuZFRlbmFudEFjY291bnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJDChxTdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIoChNDYW5jZWxUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI7ChRDYW5jZWxUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLAoXUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj8KGFJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLQoYTWFya1RlbmFudFBhc3REdWVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJAChlNYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCInChJDaHVyblRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIjoKE0NodXJuVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50Ih4KHEdldEN1c3RvbWVyQXV0aENvbmZpZ1JlcXVlc3QimgIKEkN1c3RvbWVyQXV0aENvbmZpZxIRCglhbGdvcml0aG0YASABKAkSEwoGaXNzdWVyGAIgASgJSACIAQESFQoIYXVkaWVuY2UYAyABKAlIAYgBARI3Cg5rZXlfcm90YXRlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIYCgtzaWduaW5nX2tleRgFIAEoCUgDiAEBEiwKBmNsYWltcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIJCgdfaXNzdWVyQgsKCV9hdWRpZW5jZUIRCg9fa2V5X3JvdGF0ZWRfYXRCDgoMX3NpZ25pbmdfa2V5QgkKB19jbGFpbXMiUAodR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVzcG9uc2USLwoGY29uZmlnGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJBdXRoQ29uZmlnIrEBCh9VcGRhdGVDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0EhEKCWFsZ29yaXRobRgBIAEoCRITCgZpc3N1ZXIYAiABKAlIAIgBARIVCghhdWRpZW5jZRgDIAEoCUgBiAEBEiwKBmNsYWltcxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBAUIJCgdfaXNzdWVyQgsKCV9hdWRpZW5jZUIJCgdfY2xhaW1zIlMKIFVwZGF0ZUN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEi8KBmNvbmZpZxgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVyQXV0aENvbmZpZyIlCiNSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVxdWVzdCJvCiRSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVzcG9uc2USEwoLc2lnbmluZ19rZXkYASABKAkSMgoOa2V5X3JvdGF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIisKGlZlcmlmeUN1c3RvbWVyVG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIrMCChtWZXJpZnlDdXN0b21lclRva2VuUmVzcG9uc2USDQoFdmFsaWQYASABKAgSEgoFZXJyb3IYAiABKAlIAIgBARIYCgtjdXN0b21lcl9pZBgDIAEoCUgBiAEBEhIKBWVtYWlsGAQgASgJSAKIAQESFgoJdGVuYW50X2lkGAUgASgJSAOIAQESFwoKcHJvamVjdF9pZBgGIAEoCUgEiAEBEg0KBXJvbGVzGAcgAygJEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQFCCAoGX2Vycm9yQg4KDF9jdXN0b21lcl9pZEIICgZfZW1haWxCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEINCgtfZXhwaXJlc19hdCIkCiJHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXF1ZXN0ItsBChhDdXN0b21lck1hbmFnZW1lbnRTdGF0dXMSIQoZbmF0aXZlX21hbmFnZW1lbnRfZW5hYmxlZBgBIAEoCBIiChVleHRlcm5hbF9wcm92aWRlcl91cmwYAiABKAlIAIgBARIjChZleHRlcm5hbF9wcm92aWRlcl9uYW1lGAMgASgJSAGIAQESEwoGcmVhc29uGAQgASgJSAKIAQFCGAoWX2V4dGVybmFsX3Byb3ZpZGVyX3VybEIZChdfZXh0ZXJuYWxfcHJvdmlkZXJfbmFtZUIJCgdfcmVhc29uIlwKI0dldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlEjUKBnN0YXR1cxgBIAEoCzIlLmlkZW50aXR5LnYxLkN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cyIoChVWYWxpZGF0ZUFwaUtleVJlcXVlc3QSDwoHYXBpX2tleRgBIAEoCSLMAQoWVmFsaWRhdGVBcGlLZXlSZXNwb25zZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhAKCGtleV90eXBlGAUgASgJEg4KBnNjb3BlcxgGIAMoCRIWCg5hbGxvd2VkX21vZGVscxgHIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYCCADKAkSGwoTcmF0ZV9saW1pdF9wZXJfaG91chgJIAEoBSI3ChRDdXN0b21lckxvZ2luUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCSJtChVDdXN0b21lckxvZ2luUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ/ChdDdXN0b21lclJlZ2lzdGVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghwYXNzd29yZBgCIAEoCRIyCgxwcm9maWxlX2RhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCDwoNX3Byb2ZpbGVfZGF0YSJwChhDdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkSJwoIY3VzdG9tZXIYAyABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciI0ChtDdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJLChxDdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIioKGUN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkiKgoaQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USDAoEc2VudBgBIAEoCCI7ChhDdXN0b21lclZlcmlmeU9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIb3RwX2NvZGUYAiABKAkicQoZQ3VzdG9tZXJWZXJpZnlPVFBSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKI0N1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKJEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRIMCgRzZW50GAEgASgIIkMKHEN1c3RvbWVyUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIjAKHUN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi2QEKGVN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSFAoMcHJvdmlkZXJfa2V5GAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJEhAKCGlkX3Rva2VuGAUgASgJEg4KBnNjb3BlcxgGIAEoCRIzCgpleHBpcmVzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IhwKGlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlIoMBChlTdGFydFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIWCglyZXR1cm5fdG8YAiABKAlIAIgBARIZCgxyZWRpcmVjdF91cmkYAyABKAlIAYgBAUIMCgpfcmV0dXJuX3RvQg8KDV9yZWRpcmVjdF91cmkiMgoaU3RhcnRQcm92aWRlckxvZ2luUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIk8KGkZpbmlzaFByb3ZpZGVyTG9naW5SZXF1ZXN0EhQKDHByb3ZpZGVyX2tleRgBIAEoCRIMCgRjb2RlGAIgASgJEg0KBXN0YXRlGAMgASgJIm4KG0ZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCSKCAQohU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EhEKCWNsaWVudF9pZBgBIAEoCRIUCgxyZWRpcmVjdF91cmkYAiABKAkSDgoGc2NvcGVzGAMgAygJEhYKCXJldHVybl90bxgEIAEoCUgAiAEBQgwKCl9yZXR1cm5fdG8iOgoiU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiQwokQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0EgwKBGNvZGUYASABKAkSDQoFc3RhdGUYAiABKAkingEKJUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFZW1haWwYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSFgoJcmV0dXJuX3RvGAUgASgJSACIAQFCDAoKX3JldHVybl90byJ/Ch5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI3Ch9TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJACiFDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSK9AQoiQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIdChVpc19maXJzdF9wYXJ0eV9jbGllbnQYBSABKAgSFgoJcmV0dXJuX3RvGAYgASgJSACIAQFCDAoKX3JldHVybl90byJEChdHZXRQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkirQEKGEdldFByb3ZpZGVyVG9rZW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRIQCghpZF90b2tlbhgDIAEoCRIOCgZzY29wZXMYBCABKAkSMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUINCgtfZXhwaXJlc19hdCIyChtEZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiHgocRGVsZXRlUHJvdmlkZXJUb2tlbnNSZXNwb25zZSJ0ChhSZWx5aW5nUGFydHlMb2dpbk1ldGhvZHMSFQoIcGFzc3dvcmQYASABKAhIAIgBARIQCgNvdHAYAiABKAhIAYgBARIaChJkaXNhYmxlZF9wcm92aWRlcnMYAyADKAlCCwoJX3Bhc3N3b3JkQgYKBF9vdHAi0QQKDFJlbHlpbmdQYXJ0eRIKCgJpZBgBIAEoCRIWCg5wcmluY2lwYWxfa2luZBgCIAEoCRIWCgl0ZW5hbnRfaWQYAyABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAQgASgJSAGIAQESEQoJY2xpZW50X2lkGAUgASgJEgwKBG5hbWUYBiABKAkSFQoNcmVkaXJlY3RfdXJpcxgHIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgIIAMoCRIWCg5pc19maXJzdF9wYXJ0eRgJIAEoCBIUCgxyZXF1aXJlc19tZmEYCiABKAgSQQoNbG9naW5fbWV0aG9kcxgLIAEoCzIlLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kc0gCiAEBEhcKCmNyZWF0ZWRfYnkYDCABKAlIA4gBARIuCgpjcmVhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgPIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIbCg5wb3N0X2xvZ2luX3VybBgQIAEoCUgFiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCDQoLX2NyZWF0ZWRfYnlCDgoMX2Rpc2FibGVkX2F0QhEKD19wb3N0X2xvZ2luX3VybCKBAQoZTGlzdFJlbHlpbmdQYXJ0aWVzUmVxdWVzdBIWCg5wcmluY2lwYWxfa2luZBgBIAEoCRIWCgl0ZW5hbnRfaWQYAiABKAlIAIgBARIXCgpwcm9qZWN0X2lkGAMgASgJSAGIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZCJVChpMaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eRINCgV0b3RhbBgCIAEoBSJDChZHZXRSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSJLChdHZXRSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IoQDChlDcmVhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBARIRCgljbGllbnRfaWQYBCABKAkSDAoEbmFtZRgFIAEoCRIVCg1yZWRpcmVjdF91cmlzGAYgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAcgAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAggASgIEhQKDHJlcXVpcmVzX21mYRgJIAEoCBJBCg1sb2dpbl9tZXRob2RzGAogASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCyABKAlIA4gBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpDcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IsICChlVcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIRCgRuYW1lGAMgASgJSACIAQESFQoNcmVkaXJlY3RfdXJpcxgEIAMoCRIWCg5hbGxvd2VkX3Njb3BlcxgFIAMoCRIZCgxyZXF1aXJlc19tZmEYBiABKAhIAYgBARJBCg1sb2dpbl9tZXRob2RzGAcgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESGwoOcG9zdF9sb2dpbl91cmwYCCABKAlIA4gBAUIHCgVfbmFtZUIPCg1fcmVxdWlyZXNfbWZhQhAKDl9sb2dpbl9tZXRob2RzQhEKD19wb3N0X2xvZ2luX3VybCJOChpVcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRIwCg1yZWx5aW5nX3BhcnR5GAEgASgLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5IkcKGkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCSIdChtEaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2Ui7AIKDEN1c3RvbURvbWFpbhIKCgJpZBgBIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAIgASgJEgwKBGtpbmQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSEAoIaG9zdG5hbWUYBiABKAkSDgoGc3RhdHVzGAcgASgJEhEKCXR4dF90b2tlbhgIIAEoCRI0Cgt2ZXJpZmllZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIXCgpjcmVhdGVkX2J5GAogASgJSAGIAQESLgoKY3JlYXRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX3ZlcmlmaWVkX2F0Qg0KC19jcmVhdGVkX2J5IlcKG1JlZ2lzdGVyQ3VzdG9tRG9tYWluUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJEhAKCGhvc3RuYW1lGAIgASgJEgwKBGtpbmQYAyABKAkiUAocUmVnaXN0ZXJDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluIicKGVZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiYAoaVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USMAoNY3VzdG9tX2RvbWFpbhgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbhIQCgh2ZXJpZmllZBgCIAEoCCInChlEZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0EgoKAmlkGAEgASgJIhwKGkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlIjQKGExpc3RDdXN0b21Eb21haW5zUmVxdWVzdBIYChByZWx5aW5nX3BhcnR5X2lkGAEgASgJIkUKGUxpc3RDdXN0b21Eb21haW5zUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4i4gIKD0N1c3RvbWVyU2Vzc2lvbhIKCgJpZBgBIAEoCRITCgtjdXN0b21lcl9pZBgCIAEoCRIYChByZWx5aW5nX3BhcnR5X2lkGAMgASgJEhEKCXRlbmFudF9pZBgEIAEoCRISCgpwcm9qZWN0X2lkGAUgASgJEi4KCmNyZWF0ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjAKDGxhc3Rfc2Vlbl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKaXBfYWRkcmVzcxgJIAEoCUgAiAEBEhcKCnVzZXJfYWdlbnQYCiABKAlIAYgBARILCgNhbXIYCyADKAlCDQoLX2lwX2FkZHJlc3NCDQoLX3VzZXJfYWdlbnQiNwobTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiSwocTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRIrCgVpdGVtcxgBIAMoCzIcLmlkZW50aXR5LnYxLkN1c3RvbWVyU2Vzc2lvbiIqChxSZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0EgoKAmlkGAEgASgJIh8KHVJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlIp0CChFSZWx5aW5nUGFydHlHcmFudBIKCgJpZBgBIAEoCRIVCg1hZG1pbl91c2VyX2lkGAIgASgJEhEKCWNsaWVudF9pZBgDIAEoCRIOCgZzY29wZXMYBCADKAkSFwoKZ3JhbnRlZF9ieRgFIAEoCUgAiAEBEi4KCmdyYW50ZWRfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjMKCnJldm9rZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESFwoKcmV2b2tlZF9ieRgIIAEoCUgCiAEBQg0KC19ncmFudGVkX2J5Qg0KC19yZXZva2VkX2F0Qg0KC19yZXZva2VkX2J5Ik0KHUxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0EhoKDWFkbWluX3VzZXJfaWQYASABKAlIAIgBAUIQCg5fYWRtaW5fdXNlcl9pZCJeCh5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVzcG9uc2USLQoFaXRlbXMYASADKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudBINCgV0b3RhbBgCIAEoBSJUChhHcmFudFJlbHlpbmdQYXJ0eVJlcXVlc3QSFQoNYWRtaW5fdXNlcl9pZBgBIAEoCRIRCgljbGllbnRfaWQYAiABKAkSDgoGc2NvcGVzGAMgAygJIkoKGUdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USLQoFZ3JhbnQYASABKAsyHi5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlHcmFudCIsCh5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QSCgoCaWQYASABKAkiIQofUmV2b2tlUmVseWluZ1BhcnR5R3JhbnRSZXNwb25zZSKrAgoMQ3VzdG9tZXJSb2xlEgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgSLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoLZGlzYWJsZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDgoMX2Rpc2FibGVkX2F0IskBChhMaXN0Q3VzdG9tZXJSb2xlc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAiABKAVIAYgBARISCgVhZnRlchgDIAEoCUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARITCgZiZWZvcmUYBSABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqABChlMaXN0Q3VzdG9tZXJSb2xlc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZHZXRDdXN0b21lclJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF0dldEN1c3RvbWVyUm9sZVJlc3BvbnNlEicKBHJvbGUYASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21lclJvbGUihgEKGUNyZWF0ZUN1c3RvbWVyUm9sZVJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSCwoDa2V5GAMgASgJEgwKBG5hbWUYBCABKAkSEwoLcGVybWlzc2lvbnMYBSADKAkSEgoKaXNfZGVmYXVsdBgGIAEoCCJFChpDcmVhdGVDdXN0b21lclJvbGVSZXNwb25zZRInCgRyb2xlGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlIoABChlVcGRhdGVDdXN0b21lclJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiRQoaVXBkYXRlQ3VzdG9tZXJSb2xlUmVzcG9uc2USJwoEcm9sZRgBIAEoCzIZLmlkZW50aXR5LnYxLkN1c3RvbWVyUm9sZSIoChpEaXNhYmxlQ3VzdG9tZXJSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIdChtEaXNhYmxlQ3VzdG9tZXJSb2xlUmVzcG9uc2UijgIKFkN1c3RvbWVyUm9sZUFzc2lnbm1lbnQSCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDwoHcm9sZV9pZBgDIAEoCRIuCgpncmFudGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GAUgASgJSACIAQESMwoKcmV2b2tlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAcgASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiQQoZQXNzaWduQ3VzdG9tZXJSb2xlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIPCgdyb2xlX2lkGAIgASgJIlUKGkFzc2lnbkN1c3RvbWVyUm9sZVJlc3BvbnNlEjcKCmFzc2lnbm1lbnQYASABKAsyIy5pZGVudGl0eS52MS5DdXN0b21lclJvbGVBc3NpZ25tZW50IjEKI1Jldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIiYKJFJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXNwb25zZSLTAQoiTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgCIAEoBUgBiAEBEhIKBWFmdGVyGAMgASgJSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUitAEKI0xpc3RDdXN0b21lclJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlEjIKBWl0ZW1zGAEgAygLMiMuaWRlbnRpdHkudjEuQ3VzdG9tZXJSb2xlQXNzaWdubWVudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8qsQEKD0FkbWluVXNlclN0YXR1cxIhCh1BRE1JTl9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGEFETUlOX1VTRVJfU1RBVFVTX0FDVElWRRABEh0KGUFETUlOX1VTRVJfU1RBVFVTX1BFTkRJTkcQAhIfChtBRE1JTl9VU0VSX1NUQVRVU19TVVNQRU5ERUQQAxIdChlBRE1JTl9VU0VSX1NUQVRVU19ERUxFVEVEEAQqiQEKDkN1c3RvbWVyU3RhdHVzEh8KG0NVU1RPTUVSX1NUQVRVU19VTlNQRUNJRklFRBAAEhoKFkNVU1RPTUVSX1NUQVRVU19BQ1RJVkUQARIbChdDVVNUT01FUl9TVEFUVVNfUEVORElORxACEh0KGUNVU1RPTUVSX1NUQVRVU19TVVNQRU5ERUQQAyrZAQoMVGVuYW50U3RhdHVzEh0KGVRFTkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtURU5BTlRfU1RBVFVTX1BFTkRJTkdfU0VUVVAQARIYChRURU5BTlRfU1RBVFVTX0FDVElWRRACEhoKFlRFTkFOVF9TVEFUVVNfUEFTVF9EVUUQAxIbChdURU5BTlRfU1RBVFVTX1NVU1BFTkRFRBAEEhsKF1RFTkFOVF9TVEFUVVNfQ0FOQ0VMTEVEEAUSGQoVVEVOQU5UX1NUQVRVU19DSFVSTkVEEAYqZgoNUHJvamVjdFN0YXR1cxIeChpQUk9KRUNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVBST0pFQ1RfU1RBVFVTX0FDVElWRRABEhoKFlBST0pFQ1RfU1RBVFVTX0RFTEVURUQQAiqmAQoKQWNjZXNzUm9sZRIbChdBQ0NFU1NfUk9MRV9VTlNQRUNJRklFRBAAEhwKGEFDQ0VTU19ST0xFX1RFTkFOVF9PV05FUhABEh0KGUFDQ0VTU19ST0xFX1BST0pFQ1RfQURNSU4QAhIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX0VESVRPUhADEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfVklFV0VSEAQqZAoKSW52aXRlVHlwZRIbChdJTlZJVEVfVFlQRV9VTlNQRUNJRklFRBAAEhwKGElOVklURV9UWVBFX1RFTkFOVF9PV05FUhABEhsKF0lOVklURV9UWVBFX1RFQU1fTUVNQkVSEAIqsgEKEEludml0YXRpb25TdGF0dXMSIQodSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlJTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESHgoaSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhIdChlJTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSHQoZSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKucBChhDdXN0b21lckludml0YXRpb25TdGF0dXMSKgomQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESJwojQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSJgoiQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKlwKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAjLpagoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USUAoLVmVyaWZ5RW1haWwSHy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlcXVlc3QaIC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlc3BvbnNlEnQKF1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsEisuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0GiwuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRJ6ChlTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlEi0uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QaLi5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USXAoPVmVyaWZ5RW1haWxDb2RlEiMuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBokLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEmsKFFJlcXVlc3RQYXNzd29yZFJlc2V0EiguaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJWCg1SZXNldFBhc3N3b3JkEiEuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVzcG9uc2USWQoOVXBkYXRlUGFzc3dvcmQSIi5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlc3BvbnNlElMKDFJlZnJlc2hUb2tlbhIgLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlcXVlc3QaIS5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlElkKDkNyZWF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRJQCgtHZXRDdXN0b21lchIfLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVxdWVzdBogLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVzcG9uc2USWQoOVXBkYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlc3BvbnNlElkKDkRlbGV0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRJWCg1MaXN0Q3VzdG9tZXJzEiEuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1JlcXVlc3QaIi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVzcG9uc2USXAoPU3VzcGVuZEN1c3RvbWVyEiMuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBokLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlc3BvbnNlElkKDk1lcmdlQ3VzdG9tZXJzEiIuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXNwb25zZRJoChNTZXRDdXN0b21lclBhc3N3b3JkEicuaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlcXVlc3QaKC5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USdwoYQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEnQKF0xpc3RDdXN0b21lckludml0YXRpb25zEisuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXNwb25zZRJuChVHZXRDdXN0b21lckludml0YXRpb24SKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJlc2VuZEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ9ChpWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvbhIuLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBovLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlElAKC0xpc3RUZW5hbnRzEh8uaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXNwb25zZRJTCgxEZWxldGVUZW5hbnQSIC5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVzcG9uc2USVgoNQ3JlYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlEk0KCkdldFByb2plY3QSHi5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVxdWVzdBofLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXNwb25zZRJWCg1VcGRhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USUwoMTGlzdFByb2plY3RzEiAuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVxdWVzdBohLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1Jlc3BvbnNlElYKDURlbGV0ZVByb2plY3QSIS5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlElYKDUdldEludml0YXRpb24SIS5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVxdWVzdBoiLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXNwb25zZRJZCg5BY3RpdmF0ZVRlbmFudBIiLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVxdWVzdBojLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVzcG9uc2USawoUU3VzcGVuZFRlbmFudEFjY291bnQSKC5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlElMKDENhbmNlbFRlbmFudBIgLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXNwb25zZRJfChBSZWFjdGl2YXRlVGVuYW50EiQuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QaJS5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USYgoRTWFya1RlbmFudFBhc3REdWUSJS5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QaJi5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlElAKC0NodXJuVGVuYW50Eh8uaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXNwb25zZRJuChVHZXRDdXN0b21lckF1dGhDb25maWcSKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckF1dGhDb25maWdSZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJBdXRoQ29uZmlnUmVzcG9uc2USdwoYVXBkYXRlQ3VzdG9tZXJBdXRoQ29uZmlnEiwuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJBdXRoQ29uZmlnUmVxdWVzdBotLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyQXV0aENvbmZpZ1Jlc3BvbnNlEoMBChxSb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5EjAuaWRlbnRpdHkudjEuUm90YXRlQ3VzdG9tZXJBdXRoU2lnbmluZ0tleVJlcXVlc3QaMS5pZGVudGl0eS52MS5Sb3RhdGVDdXN0b21lckF1dGhTaWduaW5nS2V5UmVzcG9uc2USaAoTVmVyaWZ5Q3VzdG9tZXJUb2tlbhInLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbWVyVG9rZW5SZXF1ZXN0GiguaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tZXJUb2tlblJlc3BvbnNlEoABChtHZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXMSLy5pZGVudGl0eS52MS5HZXRDdXN0b21lck1hbmFnZW1lbnRTdGF0dXNSZXF1ZXN0GjAuaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USWQoOVmFsaWRhdGVBcGlLZXkSIi5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlcXVlc3QaIy5pZGVudGl0eS52MS5WYWxpZGF0ZUFwaUtleVJlc3BvbnNlElYKDUN1c3RvbWVyTG9naW4SIS5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVxdWVzdBoiLmlkZW50aXR5LnYxLkN1c3RvbWVyTG9naW5SZXNwb25zZRJfChBDdXN0b21lclJlZ2lzdGVyEiQuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlcXVlc3QaJS5pZGVudGl0eS52MS5DdXN0b21lclJlZ2lzdGVyUmVzcG9uc2USawoUQ3VzdG9tZXJSZWZyZXNoVG9rZW4SKC5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlcXVlc3QaKS5pZGVudGl0eS52MS5DdXN0b21lclJlZnJlc2hUb2tlblJlc3BvbnNlEmUKEkN1c3RvbWVyUmVxdWVzdE9UUBImLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdE9UUFJlcXVlc3QaJy5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRJiChFDdXN0b21lclZlcmlmeU9UUBIlLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBomLmlkZW50aXR5LnYxLkN1c3RvbWVyVmVyaWZ5T1RQUmVzcG9uc2USgwEKHEN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXQSMC5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBoxLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJuChVDdXN0b21lclJlc2V0UGFzc3dvcmQSKS5pZGVudGl0eS52MS5DdXN0b21lclJlc2V0UGFzc3dvcmRSZXF1ZXN0GiouaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USZQoSU3RvcmVQcm92aWRlclRva2VuEiYuaWRlbnRpdHkudjEuU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBonLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlc3BvbnNlEl8KEEdldFByb3ZpZGVyVG9rZW4SJC5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVxdWVzdBolLmlkZW50aXR5LnYxLkdldFByb3ZpZGVyVG9rZW5SZXNwb25zZRJrChREZWxldGVQcm92aWRlclRva2VucxIoLmlkZW50aXR5LnYxLkRlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBopLmlkZW50aXR5LnYxLkRlbGV0ZVByb3ZpZGVyVG9rZW5zUmVzcG9uc2USZQoSU3RhcnRQcm92aWRlckxvZ2luEiYuaWRlbnRpdHkudjEuU3RhcnRQcm92aWRlckxvZ2luUmVxdWVzdBonLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlc3BvbnNlEmgKE0ZpbmlzaFByb3ZpZGVyTG9naW4SJy5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVxdWVzdBooLmlkZW50aXR5LnYxLkZpbmlzaFByb3ZpZGVyTG9naW5SZXNwb25zZRJ9ChpTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pchIuLmlkZW50aXR5LnYxLlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBovLmlkZW50aXR5LnYxLlN0YXJ0Q3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2UShgEKHUNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyEjEuaWRlbnRpdHkudjEuQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXF1ZXN0GjIuaWRlbnRpdHkudjEuQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRJ0ChdTdGFydEFkbWluTG9naW5XaXRoRm9pchIrLmlkZW50aXR5LnYxLlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBosLmlkZW50aXR5LnYxLlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USfQoaQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5Db21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5Db21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEmUKEkxpc3RSZWx5aW5nUGFydGllcxImLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydGllc1JlcXVlc3QaJy5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXNwb25zZRJcCg9HZXRSZWx5aW5nUGFydHkSIy5pZGVudGl0eS52MS5HZXRSZWx5aW5nUGFydHlSZXF1ZXN0GiQuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVzcG9uc2USZQoSQ3JlYXRlUmVseWluZ1BhcnR5EiYuaWRlbnRpdHkudjEuQ3JlYXRlUmVseWluZ1BhcnR5UmVxdWVzdBonLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKElVwZGF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLlVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJoChNEaXNhYmxlUmVseWluZ1BhcnR5EicuaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QaKC5pZGVudGl0eS52MS5EaXNhYmxlUmVseWluZ1BhcnR5UmVzcG9uc2USawoUUmVnaXN0ZXJDdXN0b21Eb21haW4SKC5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlcXVlc3QaKS5pZGVudGl0eS52MS5SZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEmUKElZlcmlmeUN1c3RvbURvbWFpbhImLmlkZW50aXR5LnYxLlZlcmlmeUN1c3RvbURvbWFpblJlcXVlc3QaJy5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRJlChJEZWxldGVDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5EZWxldGVDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2USYgoRTGlzdEN1c3RvbURvbWFpbnMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tRG9tYWluc1Jlc3BvbnNlEmsKFExpc3RDdXN0b21lclNlc3Npb25zEiguaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXF1ZXN0GikuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyU2Vzc2lvbnNSZXNwb25zZRJuChVSZXZva2VDdXN0b21lclNlc3Npb24SKS5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclNlc3Npb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UScQoWTGlzdFJlbHlpbmdQYXJ0eUdyYW50cxIqLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXF1ZXN0GisuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1Jlc3BvbnNlEmIKEUdyYW50UmVseWluZ1BhcnR5EiUuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXF1ZXN0GiYuaWRlbnRpdHkudjEuR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRJ0ChdSZXZva2VSZWx5aW5nUGFydHlHcmFudBIrLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBosLmlkZW50aXR5LnYxLlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVzcG9uc2USYgoRTGlzdEN1c3RvbWVyUm9sZXMSJS5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJSb2xlc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJSb2xlc1Jlc3BvbnNlElwKD0dldEN1c3RvbWVyUm9sZRIjLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUm9sZVJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRDdXN0b21lclJvbGVSZXNwb25zZRJlChJDcmVhdGVDdXN0b21lclJvbGUSJi5pZGVudGl0eS52MS5DcmVhdGVDdXN0b21lclJvbGVSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSb2xlUmVzcG9uc2USZQoSVXBkYXRlQ3VzdG9tZXJSb2xlEiYuaWRlbnRpdHkudjEuVXBkYXRlQ3VzdG9tZXJSb2xlUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUN1c3RvbWVyUm9sZVJlc3BvbnNlEmgKE0Rpc2FibGVDdXN0b21lclJvbGUSJy5pZGVudGl0eS52MS5EaXNhYmxlQ3VzdG9tZXJSb2xlUmVxdWVzdBooLmlkZW50aXR5LnYxLkRpc2FibGVDdXN0b21lclJvbGVSZXNwb25zZRJlChJBc3NpZ25DdXN0b21lclJvbGUSJi5pZGVudGl0eS52MS5Bc3NpZ25DdXN0b21lclJvbGVSZXF1ZXN0GicuaWRlbnRpdHkudjEuQXNzaWduQ3VzdG9tZXJSb2xlUmVzcG9uc2USgwEKHFJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnQSMC5pZGVudGl0eS52MS5SZXZva2VDdXN0b21lclJvbGVBc3NpZ25tZW50UmVxdWVzdBoxLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyUm9sZUFzc2lnbm1lbnRSZXNwb25zZRKAAQobTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzEi8uaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyUm9sZUFzc2lnbm1lbnRzUmVxdWVzdBowLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclJvbGVBc3NpZ25tZW50c1Jlc3BvbnNlQj1aO2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9pZGVudGl0eS92MTtpZGVudGl0eXYxYgZwcm90bzM", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
490
+ var file_identity_v1_identity = /* @__PURE__ */ fileDesc3("ChppZGVudGl0eS92MS9pZGVudGl0eS5wcm90bxILaWRlbnRpdHkudjEijwQKCUFkbWluVXNlchIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESFwoKYXZhdGFyX3VybBgFIAEoCUgCiAEBEhkKEWlzX3BsYXRmb3JtX2FkbWluGAYgASgIEiwKBnN0YXR1cxgUIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1cxI6ChFlbWFpbF92ZXJpZmllZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIA4gBARI2Cg1sYXN0X2xvZ2luX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEiwKBmFjY2VzcxgoIAMoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcxIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg0KC19hdmF0YXJfdXJsQhQKEl9lbWFpbF92ZXJpZmllZF9hdEIQCg5fbGFzdF9sb2dpbl9hdCLuAQoPQWRtaW5Vc2VyQWNjZXNzEgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhcKCnByb2plY3RfaWQYBCABKAlIAIgBARIlCgRyb2xlGAUgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIuCgpncmFudGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpncmFudGVkX2J5GDMgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX2dyYW50ZWRfYnki9QIKCEN1c3RvbWVyEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEisKBnN0YXR1cxgUIAEoDjIbLmlkZW50aXR5LnYxLkN1c3RvbWVyU3RhdHVzEjoKEWVtYWlsX3ZlcmlmaWVkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjYKDWxhc3RfbG9naW5fYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCFAoSX2VtYWlsX3ZlcmlmaWVkX2F0QhAKDl9sYXN0X2xvZ2luX2F0IvQCCgZUZW5hbnQSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIpCgZzdGF0dXMYFCABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXMSNQoMc3VzcGVuZGVkX2F0GBUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEkIKGWNhbmNlbGxhdGlvbl9zY2hlZHVsZWRfYXQYFiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESGwoTZGF0YV9yZXRlbnRpb25fZGF5cxgeIAEoBRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIPCg1fc3VzcGVuZGVkX2F0QhwKGl9jYW5jZWxsYXRpb25fc2NoZWR1bGVkX2F0IuAHCgdQcm9qZWN0EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIqCgZzdGF0dXMYFCABKA4yGi5pZGVudGl0eS52MS5Qcm9qZWN0U3RhdHVzEj4KFWRlbGV0aW9uX3NjaGVkdWxlZF9hdBgVIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpjcmVhdGVkX2J5GCggASgJSAKIAQESFwoKdXBkYXRlZF9ieRgpIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhkKDGRpc3BsYXlfbmFtZRg8IAEoCUgEiAEBEhUKCGxvZ29fdXJsGD0gASgJSAWIAQESGgoNcHJpbWFyeV9jb2xvchg+IAEoCUgGiAEBEhYKCWZyb21fbmFtZRg/IAEoCUgHiAEBEhUKCHJlcGx5X3RvGEAgASgJSAiIAQESGgoNc3VwcG9ydF9lbWFpbBhBIAEoCUgJiAEBEhkKDGFwcF9iYXNlX3VybBhCIAEoCUgKiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBhGIAEoCEgLiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGFAgASgISAyIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBhRIAEoCEgNiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGFIgASgISA6IAQFCDgoMX2Rlc2NyaXB0aW9uQhgKFl9kZWxldGlvbl9zY2hlZHVsZWRfYXRCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQirwMKCkludml0YXRpb24SCgoCaWQYASABKAkSDQoFZW1haWwYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhMKC3Byb2plY3RfaWRzGAQgAygJEiUKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlEiwKC2ludml0ZV90eXBlGAYgASgOMhcuaWRlbnRpdHkudjEuSW52aXRlVHlwZRISCgppbnZpdGVkX2J5GAcgASgJEhQKB21lc3NhZ2UYCCABKAlIAIgBARItCgZzdGF0dXMYFCABKA4yHS5pZGVudGl0eS52MS5JbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9tZXNzYWdlQg4KDF9hY2NlcHRlZF9hdCLpAwoSQ3VzdG9tZXJJbnZpdGF0aW9uEgoKAmlkGAEgASgJEg0KBWVtYWlsGAIgASgJEhEKCXRlbmFudF9pZBgDIAEoCRISCgpwcm9qZWN0X2lkGAQgASgJEhcKCmludml0ZWRfYnkYBSABKAlIAIgBARIUCgdtZXNzYWdlGAYgASgJSAGIAQESNQoGc3RhdHVzGBQgASgOMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uU3RhdHVzEi4KCmV4cGlyZXNfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2FjY2VwdGVkX2F0GB8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiEKFGFjY2VwdGVkX2N1c3RvbWVyX2lkGCAgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDgoMX2FjY2VwdGVkX2F0QhcKFV9hY2NlcHRlZF9jdXN0b21lcl9pZCLZBAoGQXBpS2V5EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSEgoKa2V5X3ByZWZpeBgFIAEoCRIpCghrZXlfdHlwZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFwaUtleVR5cGUSFAoHcmF3X2tleRgKIAEoCUgAiAEBEhEKCWlzX2FjdGl2ZRgUIAEoCBIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGBUgASgFSAGIAQESMwoKZXhwaXJlc19hdBgWIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBARIOCgZzY29wZXMYFyADKAkSLgoIbWV0YWRhdGEYGCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQESNQoMbGFzdF91c2VkX2F0GB4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhMKC3VzYWdlX2NvdW50GB8gASgFEhIKCmNyZWF0ZWRfYnkYKCABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCgoIX3Jhd19rZXlCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCCwoJX21ldGFkYXRhQg8KDV9sYXN0X3VzZWRfYXQilgIKDlNlc3Npb25Db250ZXh0EhYKCXRlbmFudF9pZBgBIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAiABKAlIAYgBARIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEhsKDmVmZmVjdGl2ZV9yb2xlGAQgASgJSAKIAQESLgoRYXZhaWxhYmxlX3RlbmFudHMYBSADKAsyEy5pZGVudGl0eS52MS5UZW5hbnQSMAoSYXZhaWxhYmxlX3Byb2plY3RzGAYgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdEIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkQhEKD19lZmZlY3RpdmVfcm9sZSJ9CgxMb2dpblJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiXwoNTG9naW5SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJEhQKDGFjY2Vzc190b2tlbhgCIAEoCRIkCgR1c2VyGAMgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIn8KE0xvZ2luV2l0aE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSCwoDb3RwGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkImYKFExvZ2luV2l0aE9UUFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEiQKBHVzZXIYAyABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIicAoRUmVxdWVzdE9UUFJlcXVlc3QSDQoFZW1haWwYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWQiJQoSUmVxdWVzdE9UUFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiDwoNTG9nb3V0UmVxdWVzdCIhCg5Mb2dvdXRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIrUBCg9SZWdpc3RlclJlcXVlc3QSDQoFZW1haWwYASABKAkSEAoIcGFzc3dvcmQYAiABKAkSFgoJdGVuYW50X2lkGAMgASgJSACIAQESFwoKcHJvamVjdF9pZBgEIAEoCUgBiAEBEioKBHJvbGUYBSABKA4yFy5pZGVudGl0eS52MS5BY2Nlc3NSb2xlSAKIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIHCgVfcm9sZSI4ChBSZWdpc3RlclJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIiIwoSVmVyaWZ5RW1haWxSZXF1ZXN0Eg0KBXRva2VuGAEgASgJIiYKE1ZlcmlmeUVtYWlsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIgCh5SZXNlbmRWZXJpZmljYXRpb25FbWFpbFJlcXVlc3QiMgofUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjEKIFNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjQKIVNlbmRFbWFpbFZlcmlmaWNhdGlvbkNvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjUKFlZlcmlmeUVtYWlsQ29kZVJlcXVlc3QSDQoFZW1haWwYASABKAkSDAoEY29kZRgCIAEoCSI8ChdWZXJpZnlFbWFpbENvZGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCHZlcmlmaWVkGAIgASgIIiwKG1JlcXVlc3RQYXNzd29yZFJlc2V0UmVxdWVzdBINCgVlbWFpbBgBIAEoCSIvChxSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiOwoUUmVzZXRQYXNzd29yZFJlcXVlc3QSDQoFdG9rZW4YASABKAkSFAoMbmV3X3Bhc3N3b3JkGAIgASgJIigKFVJlc2V0UGFzc3dvcmRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkcKFVVwZGF0ZVBhc3N3b3JkUmVxdWVzdBIYChBjdXJyZW50X3Bhc3N3b3JkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIpChZVcGRhdGVQYXNzd29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoTUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIkMKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJIhoKGEdldFNlc3Npb25Db250ZXh0UmVxdWVzdCJJChlHZXRTZXNzaW9uQ29udGV4dFJlc3BvbnNlEiwKB2NvbnRleHQYASABKAsyGy5pZGVudGl0eS52MS5TZXNzaW9uQ29udGV4dCIoChNTd2l0Y2hUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJEChRTd2l0Y2hUZW5hbnRSZXNwb25zZRIsCgdjb250ZXh0GAEgASgLMhsuaWRlbnRpdHkudjEuU2Vzc2lvbkNvbnRleHQiKgoUU3dpdGNoUHJvamVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJFChVTd2l0Y2hQcm9qZWN0UmVzcG9uc2USLAoHY29udGV4dBgBIAEoCzIbLmlkZW50aXR5LnYxLlNlc3Npb25Db250ZXh0IhwKGkNsZWFyU2Vzc2lvbkNvbnRleHRSZXF1ZXN0Ii4KG0NsZWFyU2Vzc2lvbkNvbnRleHRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIg4KDEdldE1lUmVxdWVzdCI1Cg1HZXRNZVJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXIi1wEKFkNyZWF0ZUFkbWluVXNlclJlcXVlc3QSDQoFZW1haWwYASABKAkSFwoKZmlyc3RfbmFtZRgCIAEoCUgAiAEBEhYKCWxhc3RfbmFtZRgDIAEoCUgBiAEBEhEKCXRlbmFudF9pZBgEIAEoCRIXCgpwcm9qZWN0X2lkGAUgASgJSAKIAQESJQoEcm9sZRgGIAEoDjIXLmlkZW50aXR5LnYxLkFjY2Vzc1JvbGVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUINCgtfcHJvamVjdF9pZCI/ChdDcmVhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIiEKE0dldEFkbWluVXNlclJlcXVlc3QSCgoCaWQYASABKAkiPAoUR2V0QWRtaW5Vc2VyUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLYAQoWVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBIKCgJpZBgBIAEoCRIXCgpmaXJzdF9uYW1lGAIgASgJSACIAQESFgoJbGFzdF9uYW1lGAMgASgJSAGIAQESFwoKYXZhdGFyX3VybBgEIAEoCUgCiAEBEjEKBnN0YXR1cxgFIAEoDjIcLmlkZW50aXR5LnYxLkFkbWluVXNlclN0YXR1c0gDiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmxCCQoHX3N0YXR1cyI/ChdVcGRhdGVBZG1pblVzZXJSZXNwb25zZRIkCgR1c2VyGAEgASgLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyIsYBChVMaXN0QWRtaW5Vc2Vyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYBCABKAlIAYgBARITCgZiZWZvcmUYBSABKAlIAogBARISCgVmaXJzdBgGIAEoBUgDiAEBEhEKBGxhc3QYByABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpoBChZMaXN0QWRtaW5Vc2Vyc1Jlc3BvbnNlEiUKBWl0ZW1zGAEgAygLMhYuaWRlbnRpdHkudjEuQWRtaW5Vc2VyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKNAQoSR3JhbnRBY2Nlc3NSZXF1ZXN0EhUKDWFkbWluX3VzZXJfaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhcKCnByb2plY3RfaWQYAyABKAlIAIgBARIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZUINCgtfcHJvamVjdF9pZCJDChNHcmFudEFjY2Vzc1Jlc3BvbnNlEiwKBmFjY2VzcxgBIAEoCzIcLmlkZW50aXR5LnYxLkFkbWluVXNlckFjY2VzcyIoChNSZXZva2VBY2Nlc3NSZXF1ZXN0EhEKCWFjY2Vzc19pZBgBIAEoCSInChRSZXZva2VBY2Nlc3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkoKFUNyZWF0ZUN1c3RvbWVyUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIVCghwYXNzd29yZBgCIAEoCUgAiAEBQgsKCV9wYXNzd29yZCJBChZDcmVhdGVDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiIAoSR2V0Q3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIj4KE0dldEN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciJ+ChVVcGRhdGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBARIwCgZzdGF0dXMYAyABKA4yGy5pZGVudGl0eS52MS5DdXN0b21lclN0YXR1c0gBiAEBQggKBl9lbWFpbEIJCgdfc3RhdHVzIkEKFlVwZGF0ZUN1c3RvbWVyUmVzcG9uc2USJwoIY3VzdG9tZXIYASABKAsyFS5pZGVudGl0eS52MS5DdXN0b21lciIjChVEZWxldGVDdXN0b21lclJlcXVlc3QSCgoCaWQYASABKAkiKQoWRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsUBChRMaXN0Q3VzdG9tZXJzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QimAEKFUxpc3RDdXN0b21lcnNSZXNwb25zZRIkCgVpdGVtcxgBIAMoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIkChZTdXNwZW5kQ3VzdG9tZXJSZXF1ZXN0EgoKAmlkGAEgASgJIkIKF1N1c3BlbmRDdXN0b21lclJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiUwoVTWVyZ2VDdXN0b21lcnNSZXF1ZXN0EhMKC3N1cnZpdm9yX2lkGAEgASgJEhQKDGR1cGxpY2F0ZV9pZBgCIAEoCRIPCgdkcnlfcnVuGAMgASgIImgKFk1lcmdlQ3VzdG9tZXJzUmVzcG9uc2USDwoHcmV0aXJlZBgBIAEoCBIMCgRub29wGAIgASgIEi8KBW1vdmVkGAMgASgLMiAuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNNb3ZlZCLLAQoTTWVyZ2VDdXN0b21lcnNNb3ZlZBIPCgdyZWNvcmRzGAEgASgFEg0KBWZpbGVzGAIgASgFEhsKE3Byb3ZpZGVyX2lkZW50aXRpZXMYAyABKAUSEAoIcHJvZmlsZXMYBCABKAUSDgoGc2hhcmVzGAUgASgFEhsKE3NlZ21lbnRfbWVtYmVyc2hpcHMYBiABKAUSGAoQcm9sZV9hc3NpZ25tZW50cxgHIAEoBRIeChZyZWZyZXNoX3Rva2Vuc19yZXZva2VkGAggASgFIj4KGlNldEN1c3RvbWVyUGFzc3dvcmRSZXF1ZXN0EgoKAmlkGAEgASgJEhQKDG5ld19wYXNzd29yZBgCIAEoCSIuChtTZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLcAQofQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIXCgppbnZpdGVkX2J5GAIgASgJSACIAQESFAoHbWVzc2FnZRgDIAEoCUgBiAEBEhcKCnNlbmRfZW1haWwYBCABKAhIAogBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAUgASgJSAOIAQFCDQoLX2ludml0ZWRfYnlCCgoIX21lc3NhZ2VCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIs8BCh5MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqwBCh9MaXN0Q3VzdG9tZXJJbnZpdGF0aW9uc1Jlc3BvbnNlEi4KBWl0ZW1zGAEgAygLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIqChxHZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlQKHUdldEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEjMKCmludml0YXRpb24YASABKAsyHy5pZGVudGl0eS52MS5DdXN0b21lckludml0YXRpb24iLQofUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSIzCiBSZXZva2VDdXN0b21lckludml0YXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIo8BCh9SZXNlbmRDdXN0b21lckludml0YXRpb25SZXF1ZXN0EgoKAmlkGAEgASgJEhcKCnNlbmRfZW1haWwYAiABKAhIAIgBARIgChNhY2NlcHRfdXJsX292ZXJyaWRlGAMgASgJSAGIAQFCDQoLX3NlbmRfZW1haWxCFgoUX2FjY2VwdF91cmxfb3ZlcnJpZGUiegogUmVzZW5kQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USMwoKaW52aXRhdGlvbhgBIAEoCzIfLmlkZW50aXR5LnYxLkN1c3RvbWVySW52aXRhdGlvbhISCgphY2NlcHRfdXJsGAIgASgJEg0KBXRva2VuGAMgASgJIjIKIVZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBINCgV0b2tlbhgBIAEoCSKHAQoiVmFsaWRhdGVDdXN0b21lckludml0YXRpb25SZXNwb25zZRIzCgppbnZpdGF0aW9uGAEgASgLMh8uaWRlbnRpdHkudjEuQ3VzdG9tZXJJbnZpdGF0aW9uEiwKCXByb3ZpZGVycxgCIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciJUCh9BY2NlcHRDdXN0b21lckludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJEhUKCHBhc3N3b3JkGAIgASgJSACIAQFCCwoJX3Bhc3N3b3JkIngKIEFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEicKCGN1c3RvbWVyGAEgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXISFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkiIwoTQ3JlYXRlVGVuYW50UmVxdWVzdBIMCgRuYW1lGAEgASgJIjsKFENyZWF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIeChBHZXRUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJIjgKEUdldFRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCJ4ChNVcGRhdGVUZW5hbnRSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIuCgZzdGF0dXMYAyABKA4yGS5pZGVudGl0eS52MS5UZW5hbnRTdGF0dXNIAYgBAUIHCgVfbmFtZUIJCgdfc3RhdHVzIjsKFFVwZGF0ZVRlbmFudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCLDAQoSTGlzdFRlbmFudHNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKUAQoTTGlzdFRlbmFudHNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLlRlbmFudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIQoTRGVsZXRlVGVuYW50UmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVUZW5hbnRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqEHChRDcmVhdGVQcm9qZWN0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESEQoJdGVuYW50X2lkGAMgASgJEiAKE2RlZmF1bHRfbG9jYWxlX2NvZGUYBCABKAlIAYgBARIoChtkZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWUYBSABKAlIAogBARInChpkZWZhdWx0X2xvY2FsZV9uYXRpdmVfbmFtZRgGIAEoCUgDiAEBEiIKFWRlZmF1bHRfbG9jYWxlX2lzX3J0bBgHIAEoCEgEiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgFiAEBEhUKCGxvZ29fdXJsGAsgASgJSAaIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgHiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgIiAEBEhUKCHJlcGx5X3RvGA4gASgJSAmIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgKiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgLiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgMiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISA2IAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgOiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA+IAQFCDgoMX2Rlc2NyaXB0aW9uQhYKFF9kZWZhdWx0X2xvY2FsZV9jb2RlQh4KHF9kZWZhdWx0X2xvY2FsZV9kaXNwbGF5X25hbWVCHQobX2RlZmF1bHRfbG9jYWxlX25hdGl2ZV9uYW1lQhgKFl9kZWZhdWx0X2xvY2FsZV9pc19ydGxCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVQ3JlYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ih8KEUdldFByb2plY3RSZXF1ZXN0EgoKAmlkGAEgASgJIjsKEkdldFByb2plY3RSZXNwb25zZRIlCgdwcm9qZWN0GAEgASgLMhQuaWRlbnRpdHkudjEuUHJvamVjdCLaBQoUVXBkYXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLwoGc3RhdHVzGAQgASgOMhouaWRlbnRpdHkudjEuUHJvamVjdFN0YXR1c0gCiAEBEhkKDGRpc3BsYXlfbmFtZRgKIAEoCUgDiAEBEhUKCGxvZ29fdXJsGAsgASgJSASIAQESGgoNcHJpbWFyeV9jb2xvchgMIAEoCUgFiAEBEhYKCWZyb21fbmFtZRgNIAEoCUgGiAEBEhUKCHJlcGx5X3RvGA4gASgJSAeIAQESGgoNc3VwcG9ydF9lbWFpbBgPIAEoCUgIiAEBEhkKDGFwcF9iYXNlX3VybBgQIAEoCUgJiAEBEisKHmN1c3RvbWVyX3dlbGNvbWVfZW1haWxfZW5hYmxlZBgUIAEoCEgKiAEBEiQKF2N1c3RvbWVyX3NpZ251cF9lbmFibGVkGB4gASgISAuIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgfIAEoCEgMiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGCAgASgISA2IAQFCBwoFX25hbWVCDgoMX2Rlc2NyaXB0aW9uQgkKB19zdGF0dXNCDwoNX2Rpc3BsYXlfbmFtZUILCglfbG9nb191cmxCEAoOX3ByaW1hcnlfY29sb3JCDAoKX2Zyb21fbmFtZUILCglfcmVwbHlfdG9CEAoOX3N1cHBvcnRfZW1haWxCDwoNX2FwcF9iYXNlX3VybEIhCh9fY3VzdG9tZXJfd2VsY29tZV9lbWFpbF9lbmFibGVkQhoKGF9jdXN0b21lcl9zaWdudXBfZW5hYmxlZEIcChpfY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZEIXChVfY3VzdG9tZXJfb3RwX2VuYWJsZWQiPgoVVXBkYXRlUHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0ItcBChNMaXN0UHJvamVjdHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKFExpc3RQcm9qZWN0c1Jlc3BvbnNlEiMKBWl0ZW1zGAEgAygLMhQuaWRlbnRpdHkudjEuUHJvamVjdBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iIgoURGVsZXRlUHJvamVjdFJlcXVlc3QSCgoCaWQYASABKAkiKAoVRGVsZXRlUHJvamVjdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLQoYR2V0RGVmYXVsdFByb2plY3RSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJCChlHZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEiUKB3Byb2plY3QYASABKAsyFC5pZGVudGl0eS52MS5Qcm9qZWN0Ii4KGFNldERlZmF1bHRQcm9qZWN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIkIKGVNldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USJQoHcHJvamVjdBgBIAEoCzIULmlkZW50aXR5LnYxLlByb2plY3QixwEKF0NyZWF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRITCgtwcm9qZWN0X2lkcxgDIAMoCRIlCgRyb2xlGAQgASgOMhcuaWRlbnRpdHkudjEuQWNjZXNzUm9sZRIsCgtpbnZpdGVfdHlwZRgFIAEoDjIXLmlkZW50aXR5LnYxLkludml0ZVR5cGUSFAoHbWVzc2FnZRgGIAEoCUgAiAEBQgoKCF9tZXNzYWdlIkcKGENyZWF0ZUludml0YXRpb25SZXNwb25zZRIrCgppbnZpdGF0aW9uGAEgASgLMhcuaWRlbnRpdHkudjEuSW52aXRhdGlvbiLaAQoWTGlzdEludml0YXRpb25zUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpwBChdMaXN0SW52aXRhdGlvbnNSZXNwb25zZRImCgVpdGVtcxgBIAMoCzIXLmlkZW50aXR5LnYxLkludml0YXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKF1Jldm9rZUludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiTAoXQWNjZXB0SW52aXRhdGlvblJlcXVlc3QSDQoFdG9rZW4YASABKAkSFQoIcGFzc3dvcmQYAiABKAlIAIgBAUILCglfcGFzc3dvcmQiVAoYQWNjZXB0SW52aXRhdGlvblJlc3BvbnNlEiQKBHVzZXIYASABKAsyFi5pZGVudGl0eS52MS5BZG1pblVzZXISEgoKc2Vzc2lvbl9pZBgCIAEoCSIqChlWYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIkkKGlZhbGlkYXRlSW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIrYCChNDcmVhdGVBcGlLZXlSZXF1ZXN0EgwKBG5hbWUYASABKAkSKQoIa2V5X3R5cGUYAiABKA4yFy5pZGVudGl0eS52MS5BcGlLZXlUeXBlEg4KBnNjb3BlcxgDIAMoCRIgChNyYXRlX2xpbWl0X3Blcl9ob3VyGAQgASgFSACIAQESMwoKZXhwaXJlc19hdBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCg5hbGxvd2VkX21vZGVscxgGIAMoCRIaChJhbGxvd2VkX2ZpbGVfdHlwZXMYByADKAkSFgoJY29uZmlnX2lkGAggASgJSAKIAQFCFgoUX3JhdGVfbGltaXRfcGVyX2hvdXJCDQoLX2V4cGlyZXNfYXRCDAoKX2NvbmZpZ19pZCI8ChRDcmVhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5Ih4KEEdldEFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiOQoRR2V0QXBpS2V5UmVzcG9uc2USJAoHYXBpX2tleRgBIAEoCzITLmlkZW50aXR5LnYxLkFwaUtleSLDAQoSTGlzdEFwaUtleXNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQESKwoFd2hlcmUYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKUAQoTTGlzdEFwaUtleXNSZXNwb25zZRIiCgVpdGVtcxgBIAMoCzITLmlkZW50aXR5LnYxLkFwaUtleRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ixAEKE1VwZGF0ZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhYKCWlzX2FjdGl2ZRgDIAEoCEgBiAEBEg4KBnNjb3BlcxgEIAMoCRIVCg11cGRhdGVfc2NvcGVzGAYgASgIEiAKE3JhdGVfbGltaXRfcGVyX2hvdXIYBSABKAVIAogBAUIHCgVfbmFtZUIMCgpfaXNfYWN0aXZlQhYKFF9yYXRlX2xpbWl0X3Blcl9ob3VyIjwKFFVwZGF0ZUFwaUtleVJlc3BvbnNlEiQKB2FwaV9rZXkYASABKAsyEy5pZGVudGl0eS52MS5BcGlLZXkiIQoTUm90YXRlQXBpS2V5UmVxdWVzdBIKCgJpZBgBIAEoCSI8ChRSb3RhdGVBcGlLZXlSZXNwb25zZRIkCgdhcGlfa2V5GAEgASgLMhMuaWRlbnRpdHkudjEuQXBpS2V5IiEKE1Jldm9rZUFwaUtleVJlcXVlc3QSCgoCaWQYASABKAkiJwoUUmV2b2tlQXBpS2V5UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCKxBQoMQXV0aFByb3ZpZGVyEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEgwKBHR5cGUYBCABKAkSJwoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIPCgdlbmFibGVkGAYgASgIEhIKCmlzX2RlZmF1bHQYByABKAgSEAoIcHJpb3JpdHkYCCABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgAiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIAYgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI2ChBwdWJsaXNoZWRfY29uZmlnGDwgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEh4KEXB1Ymxpc2hlZF9lbmFibGVkGD0gASgISAOIAQESPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg/IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBAUINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUITChFfcHVibGlzaGVkX2NvbmZpZ0IUChJfcHVibGlzaGVkX2VuYWJsZWRCFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IskBChhMaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARITCgZiZWZvcmUYBCABKAlIAogBARISCgVmaXJzdBgFIAEoBUgDiAEBEhEKBGxhc3QYBiABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IqQBChlMaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlEiwKCXByb3ZpZGVycxgBIAMoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iJAoWR2V0QXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSJGChdHZXRBdXRoUHJvdmlkZXJSZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlciKBAgoZQ3JlYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoHZW5hYmxlZBgFIAEoCEgAiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIAYgBARIVCghwcmlvcml0eRgHIAEoBUgCiAEBEhYKCWNvbmZpZ19pZBgIIAEoCUgDiAEBQgoKCF9lbmFibGVkQg0KC19pc19kZWZhdWx0QgsKCV9wcmlvcml0eUIMCgpfY29uZmlnX2lkIkkKGkNyZWF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIuoBChlVcGRhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARIsCgZjb25maWcYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESFAoHZW5hYmxlZBgEIAEoCEgCiAEBEhcKCmlzX2RlZmF1bHQYBSABKAhIA4gBARIVCghwcmlvcml0eRgGIAEoBUgEiAEBQgcKBV9uYW1lQgkKB19jb25maWdCCgoIX2VuYWJsZWRCDQoLX2lzX2RlZmF1bHRCCwoJX3ByaW9yaXR5IkkKGlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIicKGURlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiLQoaRGVsZXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIoChpQdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBIKCgJpZBgBIAEoCSKAAQobUHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIioKHFVucHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QSCgoCaWQYASABKAkiTAodVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiMQojR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiUQokR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLaAgoTQXV0aFByb3ZpZGVyVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBhdXRoX3Byb3ZpZGVyX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKwodR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUwoeR2V0QXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEjEKB3ZlcnNpb24YASABKAsyIC5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXJWZXJzaW9uIrMBCh9MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0EhgKEGF1dGhfcHJvdmlkZXJfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisQEKIExpc3RBdXRoUHJvdmlkZXJWZXJzaW9uc1Jlc3BvbnNlEjIKCHZlcnNpb25zGAEgAygLMiAuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ibwohUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKIAQoiUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRIrCghwcm92aWRlchgBIAEoCzIZLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlchI1CgtuZXdfdmVyc2lvbhgCIAEoCzIgLmlkZW50aXR5LnYxLkF1dGhQcm92aWRlclZlcnNpb24iqAEKIlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUgojU2NoZWR1bGVBdXRoUHJvdmlkZXJQdWJsaXNoUmVzcG9uc2USKwoIcHJvdmlkZXIYASABKAsyGS5pZGVudGl0eS52MS5BdXRoUHJvdmlkZXIiNwopQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkiWQoqQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEisKCHByb3ZpZGVyGAEgASgLMhkuaWRlbnRpdHkudjEuQXV0aFByb3ZpZGVyIh4KHEVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QiMgodRW5hYmxlZE9BdXRoUHJvdmlkZXJzUmVzcG9uc2USEQoJcHJvdmlkZXJzGAEgAygJIioKF01pbnRTZXJ2aWNlVG9rZW5SZXF1ZXN0Eg8KB3B1cnBvc2UYASABKAkiTgoYTWludFNlcnZpY2VUb2tlblJlc3BvbnNlEg0KBXRva2VuGAEgASgJEg8KB3B1cnBvc2UYAiABKAkSEgoKZXhwaXJlc19hdBgDIAEoCSKOAQoWVXBkYXRlTXlQcm9maWxlUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFwoKYXZhdGFyX3VybBgDIAEoCUgCiAEBQg0KC19maXJzdF9uYW1lQgwKCl9sYXN0X25hbWVCDQoLX2F2YXRhcl91cmwiPwoXVXBkYXRlTXlQcm9maWxlUmVzcG9uc2USJAoEdXNlchgBIAEoCzIWLmlkZW50aXR5LnYxLkFkbWluVXNlciLOAQodTGlzdE15T0F1dGhDb25uZWN0aW9uc1JlcXVlc3QSEgoFZmlyc3QYASABKAVIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhEKBGxhc3QYAyABKAVIAogBARITCgZiZWZvcmUYBCABKAlIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBAUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmVCCAoGX3doZXJlIo0BCg9PQXV0aENvbm5lY3Rpb24SEAoIcHJvdmlkZXIYASABKAkSGAoQcHJvdmlkZXJfdXNlcl9pZBgCIAEoCRISCgVlbWFpbBgDIAEoCUgAiAEBEjAKDGNvbm5lY3RlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCCAoGX2VtYWlsIq4BCh5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVzcG9uc2USMQoLY29ubmVjdGlvbnMYASADKAsyHC5pZGVudGl0eS52MS5PQXV0aENvbm5lY3Rpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIi4KGlVubGlua09BdXRoUHJvdmlkZXJSZXF1ZXN0EhAKCHByb3ZpZGVyGAEgASgJIi4KG1VubGlua09BdXRoUHJvdmlkZXJSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi4KHUNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJIjMKHkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXNwb25zZRIRCglhdmFpbGFibGUYASABKAgijwEKG0NvbXBsZXRlQWNjb3VudFNldHVwUmVxdWVzdBIXCgpmaXJzdF9uYW1lGAEgASgJSACIAQESFgoJbGFzdF9uYW1lGAIgASgJSAGIAQESFQoIcGFzc3dvcmQYAyABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQgsKCV9wYXNzd29yZCJbChxDb21wbGV0ZUFjY291bnRTZXR1cFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSGQoMcmVkaXJlY3RfdXJsGAIgASgJSACIAQFCDwoNX3JlZGlyZWN0X3VybCItChpDcmVhdGVTaWdudXBTZXNzaW9uUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJIi4KG0NyZWF0ZVNpZ251cFNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKF1Jlc2VuZEludml0YXRpb25SZXF1ZXN0EhUKDWludml0YXRpb25faWQYASABKAkiKwoYUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIgoUR2V0SW52aXRhdGlvblJlcXVlc3QSCgoCaWQYASABKAkiRAoVR2V0SW52aXRhdGlvblJlc3BvbnNlEisKCmludml0YXRpb24YASABKAsyFy5pZGVudGl0eS52MS5JbnZpdGF0aW9uIioKFUFjdGl2YXRlVGVuYW50UmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkiPQoWQWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiMAobU3VzcGVuZFRlbmFudEFjY291bnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJDChxTdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCIoChNDYW5jZWxUZW5hbnRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSI7ChRDYW5jZWxUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLAoXUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIj8KGFJlYWN0aXZhdGVUZW5hbnRSZXNwb25zZRIjCgZ0ZW5hbnQYASABKAsyEy5pZGVudGl0eS52MS5UZW5hbnQiLQoYTWFya1RlbmFudFBhc3REdWVSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCSJAChlNYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlEiMKBnRlbmFudBgBIAEoCzITLmlkZW50aXR5LnYxLlRlbmFudCInChJDaHVyblRlbmFudFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJIjoKE0NodXJuVGVuYW50UmVzcG9uc2USIwoGdGVuYW50GAEgASgLMhMuaWRlbnRpdHkudjEuVGVuYW50IiQKIkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1JlcXVlc3Qi2wEKGEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1cxIhChluYXRpdmVfbWFuYWdlbWVudF9lbmFibGVkGAEgASgIEiIKFWV4dGVybmFsX3Byb3ZpZGVyX3VybBgCIAEoCUgAiAEBEiMKFmV4dGVybmFsX3Byb3ZpZGVyX25hbWUYAyABKAlIAYgBARITCgZyZWFzb24YBCABKAlIAogBAUIYChZfZXh0ZXJuYWxfcHJvdmlkZXJfdXJsQhkKF19leHRlcm5hbF9wcm92aWRlcl9uYW1lQgkKB19yZWFzb24iXAojR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVzcG9uc2USNQoGc3RhdHVzGAEgASgLMiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzIigKFVZhbGlkYXRlQXBpS2V5UmVxdWVzdBIPCgdhcGlfa2V5GAEgASgJIswBChZWYWxpZGF0ZUFwaUtleVJlc3BvbnNlEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSEAoIa2V5X3R5cGUYBSABKAkSDgoGc2NvcGVzGAYgAygJEhYKDmFsbG93ZWRfbW9kZWxzGAcgAygJEhoKEmFsbG93ZWRfZmlsZV90eXBlcxgIIAMoCRIbChNyYXRlX2xpbWl0X3Blcl9ob3VyGAkgASgFIjcKFEN1c3RvbWVyTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJIm0KFUN1c3RvbWVyTG9naW5SZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIn8KF0N1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhAKCHBhc3N3b3JkGAIgASgJEjIKDHByb2ZpbGVfZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBAUIPCg1fcHJvZmlsZV9kYXRhInAKGEN1c3RvbWVyUmVnaXN0ZXJSZXNwb25zZRIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRInCghjdXN0b21lchgDIAEoCzIVLmlkZW50aXR5LnYxLkN1c3RvbWVyIjQKG0N1c3RvbWVyUmVmcmVzaFRva2VuUmVxdWVzdBIVCg1yZWZyZXNoX3Rva2VuGAEgASgJIksKHEN1c3RvbWVyUmVmcmVzaFRva2VuUmVzcG9uc2USFAoMYWNjZXNzX3Rva2VuGAEgASgJEhUKDXJlZnJlc2hfdG9rZW4YAiABKAkiKgoZQ3VzdG9tZXJSZXF1ZXN0T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCSIqChpDdXN0b21lclJlcXVlc3RPVFBSZXNwb25zZRIMCgRzZW50GAEgASgIIjsKGEN1c3RvbWVyVmVyaWZ5T1RQUmVxdWVzdBINCgVlbWFpbBgBIAEoCRIQCghvdHBfY29kZRgCIAEoCSJxChlDdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEicKCGN1c3RvbWVyGAMgASgLMhUuaWRlbnRpdHkudjEuQ3VzdG9tZXIiNAojQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QSDQoFZW1haWwYASABKAkiNAokQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlc3BvbnNlEgwKBHNlbnQYASABKAgiQwocQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBINCgV0b2tlbhgBIAEoCRIUCgxuZXdfcGFzc3dvcmQYAiABKAkiMAodQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLZAQoZU3RvcmVQcm92aWRlclRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIUCgxwcm92aWRlcl9rZXkYAiABKAkSFAoMYWNjZXNzX3Rva2VuGAMgASgJEhUKDXJlZnJlc2hfdG9rZW4YBCABKAkSEAoIaWRfdG9rZW4YBSABKAkSDgoGc2NvcGVzGAYgASgJEjMKCmV4cGlyZXNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDQoLX2V4cGlyZXNfYXQiHAoaU3RvcmVQcm92aWRlclRva2VuUmVzcG9uc2UigwEKGVN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEhYKCXJldHVybl90bxgCIAEoCUgAiAEBEhkKDHJlZGlyZWN0X3VyaRgDIAEoCUgBiAEBQgwKCl9yZXR1cm5fdG9CDwoNX3JlZGlyZWN0X3VyaSIyChpTdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRIUCgxyZWRpcmVjdF91cmwYASABKAkiTwoaRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QSFAoMcHJvdmlkZXJfa2V5GAEgASgJEgwKBGNvZGUYAiABKAkSDQoFc3RhdGUYAyABKAkibgobRmluaXNoUHJvdmlkZXJMb2dpblJlc3BvbnNlEhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJEhQKDGFjY2Vzc190b2tlbhgDIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAQgASgJIoIBCiFTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSEQoJY2xpZW50X2lkGAEgASgJEhQKDHJlZGlyZWN0X3VyaRgCIAEoCRIOCgZzY29wZXMYAyADKAkSFgoJcmV0dXJuX3RvGAQgASgJSACIAQFCDAoKX3JldHVybl90byI6CiJTdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEhQKDHJlZGlyZWN0X3VybBgBIAEoCSJDCiRDb21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QSDAoEY29kZRgBIAEoCRINCgVzdGF0ZRgCIAEoCSKeAQolQ29tcGxldGVDdXN0b21lckxvZ2luV2l0aEZvaXJSZXNwb25zZRITCgtjdXN0b21lcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAyABKAkSFQoNcmVmcmVzaF90b2tlbhgEIAEoCRIWCglyZXR1cm5fdG8YBSABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIn8KHlN0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIRCgljbGllbnRfaWQYASABKAkSFAoMcmVkaXJlY3RfdXJpGAIgASgJEg4KBnNjb3BlcxgDIAMoCRIWCglyZXR1cm5fdG8YBCABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIjcKH1N0YXJ0QWRtaW5Mb2dpbldpdGhGb2lyUmVzcG9uc2USFAoMcmVkaXJlY3RfdXJsGAEgASgJIkAKIUNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyUmVxdWVzdBIMCgRjb2RlGAEgASgJEg0KBXN0YXRlGAIgASgJIr0BCiJDb21wbGV0ZUFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEhUKDWFkbWluX3VzZXJfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEhUKDXJlZnJlc2hfdG9rZW4YAyABKAkSDgoGc2NvcGVzGAQgAygJEh0KFWlzX2ZpcnN0X3BhcnR5X2NsaWVudBgFIAEoCBIWCglyZXR1cm5fdG8YBiABKAlIAIgBAUIMCgpfcmV0dXJuX3RvIkQKF0dldFByb3ZpZGVyVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhQKDHByb3ZpZGVyX2tleRgCIAEoCSKtAQoYR2V0UHJvdmlkZXJUb2tlblJlc3BvbnNlEhQKDGFjY2Vzc190b2tlbhgBIAEoCRIVCg1yZWZyZXNoX3Rva2VuGAIgASgJEhAKCGlkX3Rva2VuGAMgASgJEg4KBnNjb3BlcxgEIAEoCRIzCgpleHBpcmVzX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19leHBpcmVzX2F0IjIKG0RlbGV0ZVByb3ZpZGVyVG9rZW5zUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSIeChxEZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlInQKGFJlbHlpbmdQYXJ0eUxvZ2luTWV0aG9kcxIVCghwYXNzd29yZBgBIAEoCEgAiAEBEhAKA290cBgCIAEoCEgBiAEBEhoKEmRpc2FibGVkX3Byb3ZpZGVycxgDIAMoCUILCglfcGFzc3dvcmRCBgoEX290cCLRBAoMUmVseWluZ1BhcnR5EgoKAmlkGAEgASgJEhYKDnByaW5jaXBhbF9raW5kGAIgASgJEhYKCXRlbmFudF9pZBgDIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYBCABKAlIAYgBARIRCgljbGllbnRfaWQYBSABKAkSDAoEbmFtZRgGIAEoCRIVCg1yZWRpcmVjdF91cmlzGAcgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAggAygJEhYKDmlzX2ZpcnN0X3BhcnR5GAkgASgIEhQKDHJlcXVpcmVzX21mYRgKIAEoCBJBCg1sb2dpbl9tZXRob2RzGAsgASgLMiUuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5TG9naW5NZXRob2RzSAKIAQESFwoKY3JlYXRlZF9ieRgMIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKC2Rpc2FibGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhsKDnBvc3RfbG9naW5fdXJsGBAgASgJSAWIAQFCDAoKX3RlbmFudF9pZEINCgtfcHJvamVjdF9pZEIQCg5fbG9naW5fbWV0aG9kc0INCgtfY3JlYXRlZF9ieUIOCgxfZGlzYWJsZWRfYXRCEQoPX3Bvc3RfbG9naW5fdXJsIoEBChlMaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0EhYKDnByaW5jaXBhbF9raW5kGAEgASgJEhYKCXRlbmFudF9pZBgCIAEoCUgAiAEBEhcKCnByb2plY3RfaWQYAyABKAlIAYgBAUIMCgpfdGVuYW50X2lkQg0KC19wcm9qZWN0X2lkIlUKGkxpc3RSZWx5aW5nUGFydGllc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkuaWRlbnRpdHkudjEuUmVseWluZ1BhcnR5Eg0KBXRvdGFsGAIgASgFIkMKFkdldFJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIksKF0dldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkihAMKGUNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSFgoJdGVuYW50X2lkGAIgASgJSACIAQESFwoKcHJvamVjdF9pZBgDIAEoCUgBiAEBEhEKCWNsaWVudF9pZBgEIAEoCRIMCgRuYW1lGAUgASgJEhUKDXJlZGlyZWN0X3VyaXMYBiADKAkSFgoOYWxsb3dlZF9zY29wZXMYByADKAkSFgoOaXNfZmlyc3RfcGFydHkYCCABKAgSFAoMcmVxdWlyZXNfbWZhGAkgASgIEkEKDWxvZ2luX21ldGhvZHMYCiABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgLIAEoCUgDiAEBQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsIk4KGkNyZWF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiwgIKGVVwZGF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJEhEKBG5hbWUYAyABKAlIAIgBARIVCg1yZWRpcmVjdF91cmlzGAQgAygJEhYKDmFsbG93ZWRfc2NvcGVzGAUgAygJEhkKDHJlcXVpcmVzX21mYRgGIAEoCEgBiAEBEkEKDWxvZ2luX21ldGhvZHMYByABKAsyJS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHlMb2dpbk1ldGhvZHNIAogBARIbCg5wb3N0X2xvZ2luX3VybBgIIAEoCUgDiAEBQgcKBV9uYW1lQg8KDV9yZXF1aXJlc19tZmFCEAoOX2xvZ2luX21ldGhvZHNCEQoPX3Bvc3RfbG9naW5fdXJsIk4KGlVwZGF0ZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEjAKDXJlbHlpbmdfcGFydHkYASABKAsyGS5pZGVudGl0eS52MS5SZWx5aW5nUGFydHkiRwoaRGlzYWJsZVJlbHlpbmdQYXJ0eVJlcXVlc3QSFgoOcHJpbmNpcGFsX2tpbmQYASABKAkSEQoJY2xpZW50X2lkGAIgASgJIh0KG0Rpc2FibGVSZWx5aW5nUGFydHlSZXNwb25zZSLsAgoMQ3VzdG9tRG9tYWluEgoKAmlkGAEgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAiABKAkSDAoEa2luZBgDIAEoCRIRCgl0ZW5hbnRfaWQYBCABKAkSEgoKcHJvamVjdF9pZBgFIAEoCRIQCghob3N0bmFtZRgGIAEoCRIOCgZzdGF0dXMYByABKAkSEQoJdHh0X3Rva2VuGAggASgJEjQKC3ZlcmlmaWVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEhcKCmNyZWF0ZWRfYnkYCiABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfdmVyaWZpZWRfYXRCDQoLX2NyZWF0ZWRfYnkiVwobUmVnaXN0ZXJDdXN0b21Eb21haW5SZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkSEAoIaG9zdG5hbWUYAiABKAkSDAoEa2luZBgDIAEoCSJQChxSZWdpc3RlckN1c3RvbURvbWFpblJlc3BvbnNlEjAKDWN1c3RvbV9kb21haW4YASABKAsyGS5pZGVudGl0eS52MS5DdXN0b21Eb21haW4iJwoZVmVyaWZ5Q3VzdG9tRG9tYWluUmVxdWVzdBIKCgJpZBgBIAEoCSJgChpWZXJpZnlDdXN0b21Eb21haW5SZXNwb25zZRIwCg1jdXN0b21fZG9tYWluGAEgASgLMhkuaWRlbnRpdHkudjEuQ3VzdG9tRG9tYWluEhAKCHZlcmlmaWVkGAIgASgIIicKGURlbGV0ZUN1c3RvbURvbWFpblJlcXVlc3QSCgoCaWQYASABKAkiHAoaRGVsZXRlQ3VzdG9tRG9tYWluUmVzcG9uc2UiNAoYTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0EhgKEHJlbHlpbmdfcGFydHlfaWQYASABKAkiRQoZTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRIoCgVpdGVtcxgBIAMoCzIZLmlkZW50aXR5LnYxLkN1c3RvbURvbWFpbiLiAgoPQ3VzdG9tZXJTZXNzaW9uEgoKAmlkGAEgASgJEhMKC2N1c3RvbWVyX2lkGAIgASgJEhgKEHJlbHlpbmdfcGFydHlfaWQYAyABKAkSEQoJdGVuYW50X2lkGAQgASgJEhIKCnByb2plY3RfaWQYBSABKAkSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMAoMbGFzdF9zZWVuX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgppcF9hZGRyZXNzGAkgASgJSACIAQESFwoKdXNlcl9hZ2VudBgKIAEoCUgBiAEBEgsKA2FtchgLIAMoCUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudCI3ChtMaXN0Q3VzdG9tZXJTZXNzaW9uc1JlcXVlc3QSGAoQcmVseWluZ19wYXJ0eV9pZBgBIAEoCSJLChxMaXN0Q3VzdG9tZXJTZXNzaW9uc1Jlc3BvbnNlEisKBWl0ZW1zGAEgAygLMhwuaWRlbnRpdHkudjEuQ3VzdG9tZXJTZXNzaW9uIioKHFJldm9rZUN1c3RvbWVyU2Vzc2lvblJlcXVlc3QSCgoCaWQYASABKAkiHwodUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVzcG9uc2UinQIKEVJlbHlpbmdQYXJ0eUdyYW50EgoKAmlkGAEgASgJEhUKDWFkbWluX3VzZXJfaWQYAiABKAkSEQoJY2xpZW50X2lkGAMgASgJEg4KBnNjb3BlcxgEIAMoCRIXCgpncmFudGVkX2J5GAUgASgJSACIAQESLgoKZ3JhbnRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASMwoKcmV2b2tlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIXCgpyZXZva2VkX2J5GAggASgJSAKIAQFCDQoLX2dyYW50ZWRfYnlCDQoLX3Jldm9rZWRfYXRCDQoLX3Jldm9rZWRfYnkiTQodTGlzdFJlbHlpbmdQYXJ0eUdyYW50c1JlcXVlc3QSGgoNYWRtaW5fdXNlcl9pZBgBIAEoCUgAiAEBQhAKDl9hZG1pbl91c2VyX2lkIl4KHkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRItCgVpdGVtcxgBIAMoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50Eg0KBXRvdGFsGAIgASgFIlQKGEdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBIVCg1hZG1pbl91c2VyX2lkGAEgASgJEhEKCWNsaWVudF9pZBgCIAEoCRIOCgZzY29wZXMYAyADKAkiSgoZR3JhbnRSZWx5aW5nUGFydHlSZXNwb25zZRItCgVncmFudBgBIAEoCzIeLmlkZW50aXR5LnYxLlJlbHlpbmdQYXJ0eUdyYW50IiwKHlJldm9rZVJlbHlpbmdQYXJ0eUdyYW50UmVxdWVzdBIKCgJpZBgBIAEoCSIhCh9SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlItsCCgRSb2xlEgoKAmlkGAEgASgJEjYKDnByaW5jaXBhbF9raW5kGAIgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSEQoJdGVuYW50X2lkGAMgASgJEhIKCnByb2plY3RfaWQYBCABKAkSCwoDa2V5GAUgASgJEgwKBG5hbWUYBiABKAkSEwoLcGVybWlzc2lvbnMYByADKAkSEgoKaXNfZGVmYXVsdBgIIAEoCBIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0CgtkaXNhYmxlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIOCgxfZGlzYWJsZWRfYXQi+QEKEExpc3RSb2xlc1JlcXVlc3QSNgoOcHJpbmNpcGFsX2tpbmQYASABKA4yHi5pZGVudGl0eS52MS5Sb2xlUHJpbmNpcGFsS2luZBIrCgV3aGVyZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVmaXJzdBgDIAEoBUgBiAEBEhIKBWFmdGVyGAQgASgJSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBEhMKBmJlZm9yZRgGIAEoCUgEiAEBQggKBl93aGVyZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUikAEKEUxpc3RSb2xlc1Jlc3BvbnNlEiAKBWl0ZW1zGAEgAygLMhEuaWRlbnRpdHkudjEuUm9sZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHAoOR2V0Um9sZVJlcXVlc3QSCgoCaWQYASABKAkiMgoPR2V0Um9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIrYBChFDcmVhdGVSb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgsKA2tleRgEIAEoCRIMCgRuYW1lGAUgASgJEhMKC3Blcm1pc3Npb25zGAYgAygJEhIKCmlzX2RlZmF1bHQYByABKAgiNQoSQ3JlYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIngKEVVwZGF0ZVJvbGVSZXF1ZXN0EgoKAmlkGAEgASgJEhEKBG5hbWUYAiABKAlIAIgBARITCgtwZXJtaXNzaW9ucxgDIAMoCRIXCgppc19kZWZhdWx0GAQgASgISAGIAQFCBwoFX25hbWVCDQoLX2lzX2RlZmF1bHQiNQoSVXBkYXRlUm9sZVJlc3BvbnNlEh8KBHJvbGUYASABKAsyES5pZGVudGl0eS52MS5Sb2xlIiAKEkRpc2FibGVSb2xlUmVxdWVzdBIKCgJpZBgBIAEoCSIVChNEaXNhYmxlUm9sZVJlc3BvbnNlIr8CCg5Sb2xlQXNzaWdubWVudBIKCgJpZBgBIAEoCRI2Cg5wcmluY2lwYWxfa2luZBgCIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgDIAEoCRIPCgdyb2xlX2lkGAQgASgJEi4KCmdyYW50ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmdyYW50ZWRfYnkYBiABKAlIAIgBARIzCgpyZXZva2VkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEhcKCnJldm9rZWRfYnkYCCABKAlIAogBAUINCgtfZ3JhbnRlZF9ieUINCgtfcmV2b2tlZF9hdEINCgtfcmV2b2tlZF9ieSJyChFBc3NpZ25Sb2xlUmVxdWVzdBI2Cg5wcmluY2lwYWxfa2luZBgBIAEoDjIeLmlkZW50aXR5LnYxLlJvbGVQcmluY2lwYWxLaW5kEhQKDHByaW5jaXBhbF9pZBgCIAEoCRIPCgdyb2xlX2lkGAMgASgJIkUKEkFzc2lnblJvbGVSZXNwb25zZRIvCgphc3NpZ25tZW50GAEgASgLMhsuaWRlbnRpdHkudjEuUm9sZUFzc2lnbm1lbnQiKQobUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0EgoKAmlkGAEgASgJIh4KHFJldm9rZVJvbGVBc3NpZ25tZW50UmVzcG9uc2UigwIKGkxpc3RSb2xlQXNzaWdubWVudHNSZXF1ZXN0EjYKDnByaW5jaXBhbF9raW5kGAEgASgOMh4uaWRlbnRpdHkudjEuUm9sZVByaW5jaXBhbEtpbmQSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFZmlyc3QYAyABKAVIAYgBARISCgVhZnRlchgEIAEoCUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBARITCgZiZWZvcmUYBiABKAlIBIgBAUIICgZfd2hlcmVCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIqQBChtMaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2USKgoFaXRlbXMYASADKAsyGy5pZGVudGl0eS52MS5Sb2xlQXNzaWdubWVudBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8qsQEKD0FkbWluVXNlclN0YXR1cxIhCh1BRE1JTl9VU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhwKGEFETUlOX1VTRVJfU1RBVFVTX0FDVElWRRABEh0KGUFETUlOX1VTRVJfU1RBVFVTX1BFTkRJTkcQAhIfChtBRE1JTl9VU0VSX1NUQVRVU19TVVNQRU5ERUQQAxIdChlBRE1JTl9VU0VSX1NUQVRVU19ERUxFVEVEEAQqiQEKDkN1c3RvbWVyU3RhdHVzEh8KG0NVU1RPTUVSX1NUQVRVU19VTlNQRUNJRklFRBAAEhoKFkNVU1RPTUVSX1NUQVRVU19BQ1RJVkUQARIbChdDVVNUT01FUl9TVEFUVVNfUEVORElORxACEh0KGUNVU1RPTUVSX1NUQVRVU19TVVNQRU5ERUQQAyrZAQoMVGVuYW50U3RhdHVzEh0KGVRFTkFOVF9TVEFUVVNfVU5TUEVDSUZJRUQQABIfChtURU5BTlRfU1RBVFVTX1BFTkRJTkdfU0VUVVAQARIYChRURU5BTlRfU1RBVFVTX0FDVElWRRACEhoKFlRFTkFOVF9TVEFUVVNfUEFTVF9EVUUQAxIbChdURU5BTlRfU1RBVFVTX1NVU1BFTkRFRBAEEhsKF1RFTkFOVF9TVEFUVVNfQ0FOQ0VMTEVEEAUSGQoVVEVOQU5UX1NUQVRVU19DSFVSTkVEEAYqZgoNUHJvamVjdFN0YXR1cxIeChpQUk9KRUNUX1NUQVRVU19VTlNQRUNJRklFRBAAEhkKFVBST0pFQ1RfU1RBVFVTX0FDVElWRRABEhoKFlBST0pFQ1RfU1RBVFVTX0RFTEVURUQQAiqmAQoKQWNjZXNzUm9sZRIbChdBQ0NFU1NfUk9MRV9VTlNQRUNJRklFRBAAEhwKGEFDQ0VTU19ST0xFX1RFTkFOVF9PV05FUhABEh0KGUFDQ0VTU19ST0xFX1BST0pFQ1RfQURNSU4QAhIeChpBQ0NFU1NfUk9MRV9QUk9KRUNUX0VESVRPUhADEh4KGkFDQ0VTU19ST0xFX1BST0pFQ1RfVklFV0VSEAQqZAoKSW52aXRlVHlwZRIbChdJTlZJVEVfVFlQRV9VTlNQRUNJRklFRBAAEhwKGElOVklURV9UWVBFX1RFTkFOVF9PV05FUhABEhsKF0lOVklURV9UWVBFX1RFQU1fTUVNQkVSEAIqsgEKEEludml0YXRpb25TdGF0dXMSIQodSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlJTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESHgoaSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhIdChlJTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSHQoZSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKucBChhDdXN0b21lckludml0YXRpb25TdGF0dXMSKgomQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19QRU5ESU5HEAESJwojQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfQUNDRVBURUQQAhImCiJDVVNUT01FUl9JTlZJVEFUSU9OX1NUQVRVU19FWFBJUkVEEAMSJgoiQ1VTVE9NRVJfSU5WSVRBVElPTl9TVEFUVVNfUkVWT0tFRBAEKlwKCkFwaUtleVR5cGUSHAoYQVBJX0tFWV9UWVBFX1VOU1BFQ0lGSUVEEAASFwoTQVBJX0tFWV9UWVBFX1BVQkxJQxABEhcKE0FQSV9LRVlfVFlQRV9TRUNSRVQQAip5ChFSb2xlUHJpbmNpcGFsS2luZBIjCh9ST0xFX1BSSU5DSVBBTF9LSU5EX1VOU1BFQ0lGSUVEEAASIAocUk9MRV9QUklOQ0lQQUxfS0lORF9DVVNUT01FUhABEh0KGVJPTEVfUFJJTkNJUEFMX0tJTkRfQURNSU4QAjLOZQoPSWRlbnRpdHlTZXJ2aWNlEj4KBUxvZ2luEhkuaWRlbnRpdHkudjEuTG9naW5SZXF1ZXN0GhouaWRlbnRpdHkudjEuTG9naW5SZXNwb25zZRJTCgxMb2dpbldpdGhPVFASIC5pZGVudGl0eS52MS5Mb2dpbldpdGhPVFBSZXF1ZXN0GiEuaWRlbnRpdHkudjEuTG9naW5XaXRoT1RQUmVzcG9uc2USTQoKUmVxdWVzdE9UUBIeLmlkZW50aXR5LnYxLlJlcXVlc3RPVFBSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuUmVxdWVzdE9UUFJlc3BvbnNlEkEKBkxvZ291dBIaLmlkZW50aXR5LnYxLkxvZ291dFJlcXVlc3QaGy5pZGVudGl0eS52MS5Mb2dvdXRSZXNwb25zZRJHCghSZWdpc3RlchIcLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVxdWVzdBodLmlkZW50aXR5LnYxLlJlZ2lzdGVyUmVzcG9uc2USUAoLVmVyaWZ5RW1haWwSHy5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlcXVlc3QaIC5pZGVudGl0eS52MS5WZXJpZnlFbWFpbFJlc3BvbnNlEnQKF1Jlc2VuZFZlcmlmaWNhdGlvbkVtYWlsEisuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0GiwuaWRlbnRpdHkudjEuUmVzZW5kVmVyaWZpY2F0aW9uRW1haWxSZXNwb25zZRJ6ChlTZW5kRW1haWxWZXJpZmljYXRpb25Db2RlEi0uaWRlbnRpdHkudjEuU2VuZEVtYWlsVmVyaWZpY2F0aW9uQ29kZVJlcXVlc3QaLi5pZGVudGl0eS52MS5TZW5kRW1haWxWZXJpZmljYXRpb25Db2RlUmVzcG9uc2USXAoPVmVyaWZ5RW1haWxDb2RlEiMuaWRlbnRpdHkudjEuVmVyaWZ5RW1haWxDb2RlUmVxdWVzdBokLmlkZW50aXR5LnYxLlZlcmlmeUVtYWlsQ29kZVJlc3BvbnNlEmsKFFJlcXVlc3RQYXNzd29yZFJlc2V0EiguaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVxdWVzdFBhc3N3b3JkUmVzZXRSZXNwb25zZRJWCg1SZXNldFBhc3N3b3JkEiEuaWRlbnRpdHkudjEuUmVzZXRQYXNzd29yZFJlcXVlc3QaIi5pZGVudGl0eS52MS5SZXNldFBhc3N3b3JkUmVzcG9uc2USWQoOVXBkYXRlUGFzc3dvcmQSIi5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVQYXNzd29yZFJlc3BvbnNlElMKDFJlZnJlc2hUb2tlbhIgLmlkZW50aXR5LnYxLlJlZnJlc2hUb2tlblJlcXVlc3QaIS5pZGVudGl0eS52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRJiChFHZXRTZXNzaW9uQ29udGV4dBIlLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldFNlc3Npb25Db250ZXh0UmVzcG9uc2USUwoMU3dpdGNoVGVuYW50EiAuaWRlbnRpdHkudjEuU3dpdGNoVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlN3aXRjaFRlbmFudFJlc3BvbnNlElYKDVN3aXRjaFByb2plY3QSIS5pZGVudGl0eS52MS5Td2l0Y2hQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLlN3aXRjaFByb2plY3RSZXNwb25zZRJoChNDbGVhclNlc3Npb25Db250ZXh0EicuaWRlbnRpdHkudjEuQ2xlYXJTZXNzaW9uQ29udGV4dFJlcXVlc3QaKC5pZGVudGl0eS52MS5DbGVhclNlc3Npb25Db250ZXh0UmVzcG9uc2USPgoFR2V0TWUSGS5pZGVudGl0eS52MS5HZXRNZVJlcXVlc3QaGi5pZGVudGl0eS52MS5HZXRNZVJlc3BvbnNlElwKD0NyZWF0ZUFkbWluVXNlchIjLmlkZW50aXR5LnYxLkNyZWF0ZUFkbWluVXNlclJlcXVlc3QaJC5pZGVudGl0eS52MS5DcmVhdGVBZG1pblVzZXJSZXNwb25zZRJTCgxHZXRBZG1pblVzZXISIC5pZGVudGl0eS52MS5HZXRBZG1pblVzZXJSZXF1ZXN0GiEuaWRlbnRpdHkudjEuR2V0QWRtaW5Vc2VyUmVzcG9uc2USXAoPVXBkYXRlQWRtaW5Vc2VyEiMuaWRlbnRpdHkudjEuVXBkYXRlQWRtaW5Vc2VyUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZUFkbWluVXNlclJlc3BvbnNlElkKDkxpc3RBZG1pblVzZXJzEiIuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTGlzdEFkbWluVXNlcnNSZXNwb25zZRJQCgtHcmFudEFjY2VzcxIfLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVxdWVzdBogLmlkZW50aXR5LnYxLkdyYW50QWNjZXNzUmVzcG9uc2USUwoMUmV2b2tlQWNjZXNzEiAuaWRlbnRpdHkudjEuUmV2b2tlQWNjZXNzUmVxdWVzdBohLmlkZW50aXR5LnYxLlJldm9rZUFjY2Vzc1Jlc3BvbnNlElkKDkNyZWF0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJSZXNwb25zZRJQCgtHZXRDdXN0b21lchIfLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVxdWVzdBogLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyUmVzcG9uc2USWQoOVXBkYXRlQ3VzdG9tZXISIi5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlcXVlc3QaIy5pZGVudGl0eS52MS5VcGRhdGVDdXN0b21lclJlc3BvbnNlElkKDkRlbGV0ZUN1c3RvbWVyEiIuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXF1ZXN0GiMuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tZXJSZXNwb25zZRJWCg1MaXN0Q3VzdG9tZXJzEiEuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVyc1JlcXVlc3QaIi5pZGVudGl0eS52MS5MaXN0Q3VzdG9tZXJzUmVzcG9uc2USXAoPU3VzcGVuZEN1c3RvbWVyEiMuaWRlbnRpdHkudjEuU3VzcGVuZEN1c3RvbWVyUmVxdWVzdBokLmlkZW50aXR5LnYxLlN1c3BlbmRDdXN0b21lclJlc3BvbnNlElkKDk1lcmdlQ3VzdG9tZXJzEiIuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXF1ZXN0GiMuaWRlbnRpdHkudjEuTWVyZ2VDdXN0b21lcnNSZXNwb25zZRJoChNTZXRDdXN0b21lclBhc3N3b3JkEicuaWRlbnRpdHkudjEuU2V0Q3VzdG9tZXJQYXNzd29yZFJlcXVlc3QaKC5pZGVudGl0eS52MS5TZXRDdXN0b21lclBhc3N3b3JkUmVzcG9uc2USdwoYQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQ3JlYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkNyZWF0ZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEnQKF0xpc3RDdXN0b21lckludml0YXRpb25zEisuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXF1ZXN0GiwuaWRlbnRpdHkudjEuTGlzdEN1c3RvbWVySW52aXRhdGlvbnNSZXNwb25zZRJuChVHZXRDdXN0b21lckludml0YXRpb24SKS5pZGVudGl0eS52MS5HZXRDdXN0b21lckludml0YXRpb25SZXF1ZXN0GiouaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlEncKGFJlc2VuZEN1c3RvbWVySW52aXRhdGlvbhIsLmlkZW50aXR5LnYxLlJlc2VuZEN1c3RvbWVySW52aXRhdGlvblJlcXVlc3QaLS5pZGVudGl0eS52MS5SZXNlbmRDdXN0b21lckludml0YXRpb25SZXNwb25zZRJ9ChpWYWxpZGF0ZUN1c3RvbWVySW52aXRhdGlvbhIuLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBovLmlkZW50aXR5LnYxLlZhbGlkYXRlQ3VzdG9tZXJJbnZpdGF0aW9uUmVzcG9uc2USdwoYQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uEiwuaWRlbnRpdHkudjEuQWNjZXB0Q3VzdG9tZXJJbnZpdGF0aW9uUmVxdWVzdBotLmlkZW50aXR5LnYxLkFjY2VwdEN1c3RvbWVySW52aXRhdGlvblJlc3BvbnNlElMKDENyZWF0ZVRlbmFudBIgLmlkZW50aXR5LnYxLkNyZWF0ZVRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DcmVhdGVUZW5hbnRSZXNwb25zZRJKCglHZXRUZW5hbnQSHS5pZGVudGl0eS52MS5HZXRUZW5hbnRSZXF1ZXN0Gh4uaWRlbnRpdHkudjEuR2V0VGVuYW50UmVzcG9uc2USUwoMVXBkYXRlVGVuYW50EiAuaWRlbnRpdHkudjEuVXBkYXRlVGVuYW50UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZVRlbmFudFJlc3BvbnNlElAKC0xpc3RUZW5hbnRzEh8uaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXF1ZXN0GiAuaWRlbnRpdHkudjEuTGlzdFRlbmFudHNSZXNwb25zZRJTCgxEZWxldGVUZW5hbnQSIC5pZGVudGl0eS52MS5EZWxldGVUZW5hbnRSZXF1ZXN0GiEuaWRlbnRpdHkudjEuRGVsZXRlVGVuYW50UmVzcG9uc2USVgoNQ3JlYXRlUHJvamVjdBIhLmlkZW50aXR5LnYxLkNyZWF0ZVByb2plY3RSZXF1ZXN0GiIuaWRlbnRpdHkudjEuQ3JlYXRlUHJvamVjdFJlc3BvbnNlEk0KCkdldFByb2plY3QSHi5pZGVudGl0eS52MS5HZXRQcm9qZWN0UmVxdWVzdBofLmlkZW50aXR5LnYxLkdldFByb2plY3RSZXNwb25zZRJWCg1VcGRhdGVQcm9qZWN0EiEuaWRlbnRpdHkudjEuVXBkYXRlUHJvamVjdFJlcXVlc3QaIi5pZGVudGl0eS52MS5VcGRhdGVQcm9qZWN0UmVzcG9uc2USUwoMTGlzdFByb2plY3RzEiAuaWRlbnRpdHkudjEuTGlzdFByb2plY3RzUmVxdWVzdBohLmlkZW50aXR5LnYxLkxpc3RQcm9qZWN0c1Jlc3BvbnNlElYKDURlbGV0ZVByb2plY3QSIS5pZGVudGl0eS52MS5EZWxldGVQcm9qZWN0UmVxdWVzdBoiLmlkZW50aXR5LnYxLkRlbGV0ZVByb2plY3RSZXNwb25zZRJiChFHZXREZWZhdWx0UHJvamVjdBIlLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVxdWVzdBomLmlkZW50aXR5LnYxLkdldERlZmF1bHRQcm9qZWN0UmVzcG9uc2USYgoRU2V0RGVmYXVsdFByb2plY3QSJS5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlcXVlc3QaJi5pZGVudGl0eS52MS5TZXREZWZhdWx0UHJvamVjdFJlc3BvbnNlEl8KEENyZWF0ZUludml0YXRpb24SJC5pZGVudGl0eS52MS5DcmVhdGVJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkNyZWF0ZUludml0YXRpb25SZXNwb25zZRJcCg9MaXN0SW52aXRhdGlvbnMSIy5pZGVudGl0eS52MS5MaXN0SW52aXRhdGlvbnNSZXF1ZXN0GiQuaWRlbnRpdHkudjEuTGlzdEludml0YXRpb25zUmVzcG9uc2USXwoQUmV2b2tlSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJldm9rZUludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmV2b2tlSW52aXRhdGlvblJlc3BvbnNlEl8KEEFjY2VwdEludml0YXRpb24SJC5pZGVudGl0eS52MS5BY2NlcHRJbnZpdGF0aW9uUmVxdWVzdBolLmlkZW50aXR5LnYxLkFjY2VwdEludml0YXRpb25SZXNwb25zZRJlChJWYWxpZGF0ZUludml0YXRpb24SJi5pZGVudGl0eS52MS5WYWxpZGF0ZUludml0YXRpb25SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmFsaWRhdGVJbnZpdGF0aW9uUmVzcG9uc2USUwoMQ3JlYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuQ3JlYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLkNyZWF0ZUFwaUtleVJlc3BvbnNlEkoKCUdldEFwaUtleRIdLmlkZW50aXR5LnYxLkdldEFwaUtleVJlcXVlc3QaHi5pZGVudGl0eS52MS5HZXRBcGlLZXlSZXNwb25zZRJQCgtMaXN0QXBpS2V5cxIfLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVxdWVzdBogLmlkZW50aXR5LnYxLkxpc3RBcGlLZXlzUmVzcG9uc2USUwoMVXBkYXRlQXBpS2V5EiAuaWRlbnRpdHkudjEuVXBkYXRlQXBpS2V5UmVxdWVzdBohLmlkZW50aXR5LnYxLlVwZGF0ZUFwaUtleVJlc3BvbnNlElMKDFJvdGF0ZUFwaUtleRIgLmlkZW50aXR5LnYxLlJvdGF0ZUFwaUtleVJlcXVlc3QaIS5pZGVudGl0eS52MS5Sb3RhdGVBcGlLZXlSZXNwb25zZRJTCgxSZXZva2VBcGlLZXkSIC5pZGVudGl0eS52MS5SZXZva2VBcGlLZXlSZXF1ZXN0GiEuaWRlbnRpdHkudjEuUmV2b2tlQXBpS2V5UmVzcG9uc2USYgoRTGlzdEF1dGhQcm92aWRlcnMSJS5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1JlcXVlc3QaJi5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyc1Jlc3BvbnNlElwKD0dldEF1dGhQcm92aWRlchIjLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclJlcXVlc3QaJC5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJSZXNwb25zZRJlChJDcmVhdGVBdXRoUHJvdmlkZXISJi5pZGVudGl0eS52MS5DcmVhdGVBdXRoUHJvdmlkZXJSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3JlYXRlQXV0aFByb3ZpZGVyUmVzcG9uc2USZQoSVXBkYXRlQXV0aFByb3ZpZGVyEiYuaWRlbnRpdHkudjEuVXBkYXRlQXV0aFByb3ZpZGVyUmVxdWVzdBonLmlkZW50aXR5LnYxLlVwZGF0ZUF1dGhQcm92aWRlclJlc3BvbnNlEmUKEkRlbGV0ZUF1dGhQcm92aWRlchImLmlkZW50aXR5LnYxLkRlbGV0ZUF1dGhQcm92aWRlclJlcXVlc3QaJy5pZGVudGl0eS52MS5EZWxldGVBdXRoUHJvdmlkZXJSZXNwb25zZRJoChNQdWJsaXNoQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuUHVibGlzaEF1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5QdWJsaXNoQXV0aFByb3ZpZGVyUmVzcG9uc2USbgoVVW5wdWJsaXNoQXV0aFByb3ZpZGVyEikuaWRlbnRpdHkudjEuVW5wdWJsaXNoQXV0aFByb3ZpZGVyUmVxdWVzdBoqLmlkZW50aXR5LnYxLlVucHVibGlzaEF1dGhQcm92aWRlclJlc3BvbnNlEoMBChxHZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzEjAuaWRlbnRpdHkudjEuR2V0QXV0aFByb3ZpZGVyUHVibGlzaFN0YXR1c1JlcXVlc3QaMS5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJQdWJsaXNoU3RhdHVzUmVzcG9uc2USgAEKG1NjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaBIvLmlkZW50aXR5LnYxLlNjaGVkdWxlQXV0aFByb3ZpZGVyUHVibGlzaFJlcXVlc3QaMC5pZGVudGl0eS52MS5TY2hlZHVsZUF1dGhQcm92aWRlclB1Ymxpc2hSZXNwb25zZRKVAQoiQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaBI2LmlkZW50aXR5LnYxLkNhbmNlbFNjaGVkdWxlZEF1dGhQcm92aWRlclB1Ymxpc2hSZXF1ZXN0GjcuaWRlbnRpdHkudjEuQ2FuY2VsU2NoZWR1bGVkQXV0aFByb3ZpZGVyUHVibGlzaFJlc3BvbnNlEnEKFkdldEF1dGhQcm92aWRlclZlcnNpb24SKi5pZGVudGl0eS52MS5HZXRBdXRoUHJvdmlkZXJWZXJzaW9uUmVxdWVzdBorLmlkZW50aXR5LnYxLkdldEF1dGhQcm92aWRlclZlcnNpb25SZXNwb25zZRJ3ChhMaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnMSLC5pZGVudGl0eS52MS5MaXN0QXV0aFByb3ZpZGVyVmVyc2lvbnNSZXF1ZXN0Gi0uaWRlbnRpdHkudjEuTGlzdEF1dGhQcm92aWRlclZlcnNpb25zUmVzcG9uc2USfQoaUmVzdG9yZUF1dGhQcm92aWRlclZlcnNpb24SLi5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlcXVlc3QaLy5pZGVudGl0eS52MS5SZXN0b3JlQXV0aFByb3ZpZGVyVmVyc2lvblJlc3BvbnNlEm4KFUVuYWJsZWRPQXV0aFByb3ZpZGVycxIpLmlkZW50aXR5LnYxLkVuYWJsZWRPQXV0aFByb3ZpZGVyc1JlcXVlc3QaKi5pZGVudGl0eS52MS5FbmFibGVkT0F1dGhQcm92aWRlcnNSZXNwb25zZRJfChBNaW50U2VydmljZVRva2VuEiQuaWRlbnRpdHkudjEuTWludFNlcnZpY2VUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5NaW50U2VydmljZVRva2VuUmVzcG9uc2USXAoPVXBkYXRlTXlQcm9maWxlEiMuaWRlbnRpdHkudjEuVXBkYXRlTXlQcm9maWxlUmVxdWVzdBokLmlkZW50aXR5LnYxLlVwZGF0ZU15UHJvZmlsZVJlc3BvbnNlEnEKFkxpc3RNeU9BdXRoQ29ubmVjdGlvbnMSKi5pZGVudGl0eS52MS5MaXN0TXlPQXV0aENvbm5lY3Rpb25zUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RNeU9BdXRoQ29ubmVjdGlvbnNSZXNwb25zZRJoChNVbmxpbmtPQXV0aFByb3ZpZGVyEicuaWRlbnRpdHkudjEuVW5saW5rT0F1dGhQcm92aWRlclJlcXVlc3QaKC5pZGVudGl0eS52MS5VbmxpbmtPQXV0aFByb3ZpZGVyUmVzcG9uc2UScQoWQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eRIqLmlkZW50aXR5LnYxLkNoZWNrRW1haWxBdmFpbGFiaWxpdHlSZXF1ZXN0GisuaWRlbnRpdHkudjEuQ2hlY2tFbWFpbEF2YWlsYWJpbGl0eVJlc3BvbnNlEmsKFENvbXBsZXRlQWNjb3VudFNldHVwEiguaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXF1ZXN0GikuaWRlbnRpdHkudjEuQ29tcGxldGVBY2NvdW50U2V0dXBSZXNwb25zZRJoChNDcmVhdGVTaWdudXBTZXNzaW9uEicuaWRlbnRpdHkudjEuQ3JlYXRlU2lnbnVwU2Vzc2lvblJlcXVlc3QaKC5pZGVudGl0eS52MS5DcmVhdGVTaWdudXBTZXNzaW9uUmVzcG9uc2USXwoQUmVzZW5kSW52aXRhdGlvbhIkLmlkZW50aXR5LnYxLlJlc2VuZEludml0YXRpb25SZXF1ZXN0GiUuaWRlbnRpdHkudjEuUmVzZW5kSW52aXRhdGlvblJlc3BvbnNlElYKDUdldEludml0YXRpb24SIS5pZGVudGl0eS52MS5HZXRJbnZpdGF0aW9uUmVxdWVzdBoiLmlkZW50aXR5LnYxLkdldEludml0YXRpb25SZXNwb25zZRJZCg5BY3RpdmF0ZVRlbmFudBIiLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVxdWVzdBojLmlkZW50aXR5LnYxLkFjdGl2YXRlVGVuYW50UmVzcG9uc2USawoUU3VzcGVuZFRlbmFudEFjY291bnQSKC5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlcXVlc3QaKS5pZGVudGl0eS52MS5TdXNwZW5kVGVuYW50QWNjb3VudFJlc3BvbnNlElMKDENhbmNlbFRlbmFudBIgLmlkZW50aXR5LnYxLkNhbmNlbFRlbmFudFJlcXVlc3QaIS5pZGVudGl0eS52MS5DYW5jZWxUZW5hbnRSZXNwb25zZRJfChBSZWFjdGl2YXRlVGVuYW50EiQuaWRlbnRpdHkudjEuUmVhY3RpdmF0ZVRlbmFudFJlcXVlc3QaJS5pZGVudGl0eS52MS5SZWFjdGl2YXRlVGVuYW50UmVzcG9uc2USYgoRTWFya1RlbmFudFBhc3REdWUSJS5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlcXVlc3QaJi5pZGVudGl0eS52MS5NYXJrVGVuYW50UGFzdER1ZVJlc3BvbnNlElAKC0NodXJuVGVuYW50Eh8uaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXF1ZXN0GiAuaWRlbnRpdHkudjEuQ2h1cm5UZW5hbnRSZXNwb25zZRKAAQobR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzEi8uaWRlbnRpdHkudjEuR2V0Q3VzdG9tZXJNYW5hZ2VtZW50U3RhdHVzUmVxdWVzdBowLmlkZW50aXR5LnYxLkdldEN1c3RvbWVyTWFuYWdlbWVudFN0YXR1c1Jlc3BvbnNlElkKDlZhbGlkYXRlQXBpS2V5EiIuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXF1ZXN0GiMuaWRlbnRpdHkudjEuVmFsaWRhdGVBcGlLZXlSZXNwb25zZRJWCg1DdXN0b21lckxvZ2luEiEuaWRlbnRpdHkudjEuQ3VzdG9tZXJMb2dpblJlcXVlc3QaIi5pZGVudGl0eS52MS5DdXN0b21lckxvZ2luUmVzcG9uc2USXwoQQ3VzdG9tZXJSZWdpc3RlchIkLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVnaXN0ZXJSZXF1ZXN0GiUuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWdpc3RlclJlc3BvbnNlEmsKFEN1c3RvbWVyUmVmcmVzaFRva2VuEiguaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZWZyZXNoVG9rZW5SZXNwb25zZRJlChJDdXN0b21lclJlcXVlc3RPVFASJi5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RPVFBSZXF1ZXN0GicuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0T1RQUmVzcG9uc2USYgoRQ3VzdG9tZXJWZXJpZnlPVFASJS5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlcXVlc3QaJi5pZGVudGl0eS52MS5DdXN0b21lclZlcmlmeU9UUFJlc3BvbnNlEoMBChxDdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0EjAuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXF1ZXN0UGFzc3dvcmRSZXNldFJlcXVlc3QaMS5pZGVudGl0eS52MS5DdXN0b21lclJlcXVlc3RQYXNzd29yZFJlc2V0UmVzcG9uc2USbgoVQ3VzdG9tZXJSZXNldFBhc3N3b3JkEikuaWRlbnRpdHkudjEuQ3VzdG9tZXJSZXNldFBhc3N3b3JkUmVxdWVzdBoqLmlkZW50aXR5LnYxLkN1c3RvbWVyUmVzZXRQYXNzd29yZFJlc3BvbnNlEmUKElN0b3JlUHJvdmlkZXJUb2tlbhImLmlkZW50aXR5LnYxLlN0b3JlUHJvdmlkZXJUb2tlblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdG9yZVByb3ZpZGVyVG9rZW5SZXNwb25zZRJfChBHZXRQcm92aWRlclRva2VuEiQuaWRlbnRpdHkudjEuR2V0UHJvdmlkZXJUb2tlblJlcXVlc3QaJS5pZGVudGl0eS52MS5HZXRQcm92aWRlclRva2VuUmVzcG9uc2USawoURGVsZXRlUHJvdmlkZXJUb2tlbnMSKC5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1JlcXVlc3QaKS5pZGVudGl0eS52MS5EZWxldGVQcm92aWRlclRva2Vuc1Jlc3BvbnNlEmUKElN0YXJ0UHJvdmlkZXJMb2dpbhImLmlkZW50aXR5LnYxLlN0YXJ0UHJvdmlkZXJMb2dpblJlcXVlc3QaJy5pZGVudGl0eS52MS5TdGFydFByb3ZpZGVyTG9naW5SZXNwb25zZRJoChNGaW5pc2hQcm92aWRlckxvZ2luEicuaWRlbnRpdHkudjEuRmluaXNoUHJvdmlkZXJMb2dpblJlcXVlc3QaKC5pZGVudGl0eS52MS5GaW5pc2hQcm92aWRlckxvZ2luUmVzcG9uc2USfQoaU3RhcnRDdXN0b21lckxvZ2luV2l0aEZvaXISLi5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlcXVlc3QaLy5pZGVudGl0eS52MS5TdGFydEN1c3RvbWVyTG9naW5XaXRoRm9pclJlc3BvbnNlEoYBCh1Db21wbGV0ZUN1c3RvbWVyTG9naW5XaXRoRm9pchIxLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVxdWVzdBoyLmlkZW50aXR5LnYxLkNvbXBsZXRlQ3VzdG9tZXJMb2dpbldpdGhGb2lyUmVzcG9uc2USdAoXU3RhcnRBZG1pbkxvZ2luV2l0aEZvaXISKy5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlcXVlc3QaLC5pZGVudGl0eS52MS5TdGFydEFkbWluTG9naW5XaXRoRm9pclJlc3BvbnNlEn0KGkNvbXBsZXRlQWRtaW5Mb2dpbldpdGhGb2lyEi4uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXF1ZXN0Gi8uaWRlbnRpdHkudjEuQ29tcGxldGVBZG1pbkxvZ2luV2l0aEZvaXJSZXNwb25zZRJlChJMaXN0UmVseWluZ1BhcnRpZXMSJi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnRpZXNSZXF1ZXN0GicuaWRlbnRpdHkudjEuTGlzdFJlbHlpbmdQYXJ0aWVzUmVzcG9uc2USXAoPR2V0UmVseWluZ1BhcnR5EiMuaWRlbnRpdHkudjEuR2V0UmVseWluZ1BhcnR5UmVxdWVzdBokLmlkZW50aXR5LnYxLkdldFJlbHlpbmdQYXJ0eVJlc3BvbnNlEmUKEkNyZWF0ZVJlbHlpbmdQYXJ0eRImLmlkZW50aXR5LnYxLkNyZWF0ZVJlbHlpbmdQYXJ0eVJlcXVlc3QaJy5pZGVudGl0eS52MS5DcmVhdGVSZWx5aW5nUGFydHlSZXNwb25zZRJlChJVcGRhdGVSZWx5aW5nUGFydHkSJi5pZGVudGl0eS52MS5VcGRhdGVSZWx5aW5nUGFydHlSZXF1ZXN0GicuaWRlbnRpdHkudjEuVXBkYXRlUmVseWluZ1BhcnR5UmVzcG9uc2USaAoTRGlzYWJsZVJlbHlpbmdQYXJ0eRInLmlkZW50aXR5LnYxLkRpc2FibGVSZWx5aW5nUGFydHlSZXF1ZXN0GiguaWRlbnRpdHkudjEuRGlzYWJsZVJlbHlpbmdQYXJ0eVJlc3BvbnNlEmsKFFJlZ2lzdGVyQ3VzdG9tRG9tYWluEiguaWRlbnRpdHkudjEuUmVnaXN0ZXJDdXN0b21Eb21haW5SZXF1ZXN0GikuaWRlbnRpdHkudjEuUmVnaXN0ZXJDdXN0b21Eb21haW5SZXNwb25zZRJlChJWZXJpZnlDdXN0b21Eb21haW4SJi5pZGVudGl0eS52MS5WZXJpZnlDdXN0b21Eb21haW5SZXF1ZXN0GicuaWRlbnRpdHkudjEuVmVyaWZ5Q3VzdG9tRG9tYWluUmVzcG9uc2USZQoSRGVsZXRlQ3VzdG9tRG9tYWluEiYuaWRlbnRpdHkudjEuRGVsZXRlQ3VzdG9tRG9tYWluUmVxdWVzdBonLmlkZW50aXR5LnYxLkRlbGV0ZUN1c3RvbURvbWFpblJlc3BvbnNlEmIKEUxpc3RDdXN0b21Eb21haW5zEiUuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXF1ZXN0GiYuaWRlbnRpdHkudjEuTGlzdEN1c3RvbURvbWFpbnNSZXNwb25zZRJrChRMaXN0Q3VzdG9tZXJTZXNzaW9ucxIoLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVxdWVzdBopLmlkZW50aXR5LnYxLkxpc3RDdXN0b21lclNlc3Npb25zUmVzcG9uc2USbgoVUmV2b2tlQ3VzdG9tZXJTZXNzaW9uEikuaWRlbnRpdHkudjEuUmV2b2tlQ3VzdG9tZXJTZXNzaW9uUmVxdWVzdBoqLmlkZW50aXR5LnYxLlJldm9rZUN1c3RvbWVyU2Vzc2lvblJlc3BvbnNlEnEKFkxpc3RSZWx5aW5nUGFydHlHcmFudHMSKi5pZGVudGl0eS52MS5MaXN0UmVseWluZ1BhcnR5R3JhbnRzUmVxdWVzdBorLmlkZW50aXR5LnYxLkxpc3RSZWx5aW5nUGFydHlHcmFudHNSZXNwb25zZRJiChFHcmFudFJlbHlpbmdQYXJ0eRIlLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVxdWVzdBomLmlkZW50aXR5LnYxLkdyYW50UmVseWluZ1BhcnR5UmVzcG9uc2USdAoXUmV2b2tlUmVseWluZ1BhcnR5R3JhbnQSKy5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlcXVlc3QaLC5pZGVudGl0eS52MS5SZXZva2VSZWx5aW5nUGFydHlHcmFudFJlc3BvbnNlEkoKCUxpc3RSb2xlcxIdLmlkZW50aXR5LnYxLkxpc3RSb2xlc1JlcXVlc3QaHi5pZGVudGl0eS52MS5MaXN0Um9sZXNSZXNwb25zZRJECgdHZXRSb2xlEhsuaWRlbnRpdHkudjEuR2V0Um9sZVJlcXVlc3QaHC5pZGVudGl0eS52MS5HZXRSb2xlUmVzcG9uc2USTQoKQ3JlYXRlUm9sZRIeLmlkZW50aXR5LnYxLkNyZWF0ZVJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQ3JlYXRlUm9sZVJlc3BvbnNlEk0KClVwZGF0ZVJvbGUSHi5pZGVudGl0eS52MS5VcGRhdGVSb2xlUmVxdWVzdBofLmlkZW50aXR5LnYxLlVwZGF0ZVJvbGVSZXNwb25zZRJQCgtEaXNhYmxlUm9sZRIfLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVxdWVzdBogLmlkZW50aXR5LnYxLkRpc2FibGVSb2xlUmVzcG9uc2USTQoKQXNzaWduUm9sZRIeLmlkZW50aXR5LnYxLkFzc2lnblJvbGVSZXF1ZXN0Gh8uaWRlbnRpdHkudjEuQXNzaWduUm9sZVJlc3BvbnNlEmsKFFJldm9rZVJvbGVBc3NpZ25tZW50EiguaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXF1ZXN0GikuaWRlbnRpdHkudjEuUmV2b2tlUm9sZUFzc2lnbm1lbnRSZXNwb25zZRJoChNMaXN0Um9sZUFzc2lnbm1lbnRzEicuaWRlbnRpdHkudjEuTGlzdFJvbGVBc3NpZ25tZW50c1JlcXVlc3QaKC5pZGVudGl0eS52MS5MaXN0Um9sZUFzc2lnbm1lbnRzUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2lkZW50aXR5L3YxO2lkZW50aXR5djFiBnByb3RvMw", [file_google_protobuf_struct, file_google_protobuf_timestamp2, file_publish_v1_publish, file_common_v1_pagination]);
491
491
  var CustomerSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 2);
492
492
  var TenantSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 3);
493
493
  var ApiKeySchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 7);
@@ -522,6 +522,13 @@ var DeleteCustomerRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_
522
522
  var ListCustomersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 65);
523
523
  var SuspendCustomerRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 67);
524
524
  var MergeCustomersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 69);
525
+ var CreateCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 74);
526
+ var ListCustomerInvitationsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 76);
527
+ var GetCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 78);
528
+ var RevokeCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 80);
529
+ var ResendCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 82);
530
+ var ValidateCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 84);
531
+ var AcceptCustomerInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 86);
525
532
  var CreateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 88);
526
533
  var GetTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 90);
527
534
  var UpdateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 92);
@@ -552,6 +559,13 @@ var CreateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity
552
559
  var UpdateAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 141);
553
560
  var DeleteAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 143);
554
561
  var PublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 145);
562
+ var UnpublishAuthProviderRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 147);
563
+ var GetAuthProviderPublishStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 149);
564
+ var GetAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 152);
565
+ var ListAuthProviderVersionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 154);
566
+ var RestoreAuthProviderVersionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 156);
567
+ var ScheduleAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 158);
568
+ var CancelScheduledAuthProviderPublishRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 160);
555
569
  var EnabledOAuthProvidersRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 162);
556
570
  var MintServiceTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 164);
557
571
  var UpdateMyProfileRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 166);
@@ -561,32 +575,34 @@ var CheckEmailAvailabilityRequestSchema = /* @__PURE__ */ messageDesc3(file_iden
561
575
  var CompleteAccountSetupRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 175);
562
576
  var CreateSignupSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 177);
563
577
  var ResendInvitationRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 179);
564
- var GetCustomerAuthConfigRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
565
- var CustomerAuthConfigSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 196);
566
- var VerifyCustomerTokenRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 202);
567
- var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 204);
568
- var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 243);
569
- var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 245);
570
- var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
571
- var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
572
- var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
573
- var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 254);
574
- var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 256);
575
- var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 258);
576
- var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 260);
577
- var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 268);
578
- var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 270);
579
- var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 272);
580
- var CustomerRoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 274);
581
- var ListCustomerRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 275);
582
- var GetCustomerRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 277);
583
- var CreateCustomerRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 279);
584
- var UpdateCustomerRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 281);
585
- var DisableCustomerRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 283);
586
- var CustomerRoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 285);
587
- var AssignCustomerRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 286);
588
- var RevokeCustomerRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 288);
589
- var ListCustomerRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 290);
578
+ var ActivateTenantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 183);
579
+ var GetCustomerManagementStatusRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 195);
580
+ var ListRelyingPartiesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 234);
581
+ var GetRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 236);
582
+ var CreateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 238);
583
+ var UpdateRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 240);
584
+ var DisableRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 242);
585
+ var RegisterCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 245);
586
+ var VerifyCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 247);
587
+ var DeleteCustomDomainRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 249);
588
+ var ListCustomDomainsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 251);
589
+ var ListCustomerSessionsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 254);
590
+ var RevokeCustomerSessionRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 256);
591
+ var ListRelyingPartyGrantsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 259);
592
+ var GrantRelyingPartyRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 261);
593
+ var RevokeRelyingPartyGrantRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 263);
594
+ var RoleSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 265);
595
+ var ListRolesRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 266);
596
+ var GetRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 268);
597
+ var CreateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 270);
598
+ var UpdateRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 272);
599
+ var DisableRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 274);
600
+ var RoleAssignmentSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 276);
601
+ var AssignRoleRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 277);
602
+ var RevokeRoleAssignmentRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 279);
603
+ var ListRoleAssignmentsRequestSchema = /* @__PURE__ */ messageDesc3(file_identity_v1_identity, 281);
604
+ var RolePrincipalKindSchema = /* @__PURE__ */ enumDesc2(file_identity_v1_identity, 9);
605
+ var RolePrincipalKind = /* @__PURE__ */ tsEnum2(RolePrincipalKindSchema);
590
606
  var IdentityService = /* @__PURE__ */ serviceDesc(file_identity_v1_identity, 0);
591
607
 
592
608
  // ../../packages/proto-ts/src/models/v1/models_pb.js
@@ -598,26 +614,33 @@ import { fileDesc as fileDesc4, messageDesc as messageDesc4 } from "@bufbuild/pr
598
614
  var file_common_v1_access = /* @__PURE__ */ fileDesc4("ChZjb21tb24vdjEvYWNjZXNzLnByb3RvEgljb21tb24udjEiKgoLRmllbGRBY2Nlc3MSDAoEcmVhZBgBIAMoCRINCgV3cml0ZRgCIAMoCUI5WjdnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vY29tbW9uL3YxO2NvbW1vbnYxYgZwcm90bzM");
599
615
 
600
616
  // ../../packages/proto-ts/src/models/v1/models_pb.js
601
- var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEihwUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQhAKDl9kZWZhdWx0X3ZhbHVlQgwKCl9pdGVtX3R5cGVCCgoIX3N0b3JhZ2VCEAoOX3RlbXBsYXRlX3pvbmVCDQoLX3pvbmVfb3JkZXJCEwoRX3JlZmVyZW5jZV9maWx0ZXJCDQoLX3ZhbGlkYXRpb25CDAoKX3F1ZXJ5YWJsZSI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIvQFCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEhUKDXN5c3RlbV9lbnRpdHkYDSABKAgSFgoJZGVsZXRhYmxlGA4gASgISAaIAQESFQoIZWRpdGFibGUYDyABKAhIB4gBARI1Cg9tZXRhZGF0YV9zY2hlbWEYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESFwoKcGx1cmFsX2tleRgSIAEoCUgKiAEBEiwKB2xvb2t1cHMYEyADKAsyGy5tb2RlbHMudjEuTG9va3VwRGVmaW5pdGlvbhI5Cg1jYWNoZV9jb250cm9sGBQgASgLMh0ubW9kZWxzLnYxLkNhY2hlQ29udHJvbENvbmZpZ0gLiAEBQgoKCF9zaGFyaW5nQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5QhAKDl9jYWNoZV9jb250cm9sIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKJAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIXCg9jdXN0b21lcl9zY29wZWQYBCABKAgSFwoPc2hhcmluZ19lbmFibGVkGAUgASgIIo8HCgVNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSJgoGY29uZmlnGAUgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnEhYKCWNvbmZpZ19pZBgGIAEoCUgAiAEBEjIKDGNhcGFiaWxpdGllcxgHIAEoCzIcLm1vZGVscy52MS5Nb2RlbENhcGFiaWxpdGllcxIfChJjdXJyZW50X3ZlcnNpb25faWQYCCABKAlIAYgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYCSABKAVIAogBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAOIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKEmxhc3RfcHVzaGVkX2ZpZWxkcxgoIAMoCzIQLm1vZGVscy52MS5GaWVsZBI3Cg5sYXN0X3B1c2hlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBgqIAEoCUgGiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQFCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiwgIKDE1vZGVsVmVyc2lvbhIKCgJpZBgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Is0BChJDcmVhdGVNb2RlbFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gAiAEBEhYKCWNvbmZpZ19pZBgFIAEoCUgBiAEBEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAYgASgIQgkKB19jb25maWdCDAoKX2NvbmZpZ19pZCI2ChNDcmVhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIh0KD0dldE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSIzChBHZXRNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIiMKFEdldE1vZGVsQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI4ChVHZXRNb2RlbEJ5S2V5UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiwgEKEUxpc3RNb2RlbHNSZXF1ZXN0EhIKBWFmdGVyGAYgASgJSACIAQESEwoGYmVmb3JlGAcgASgJSAGIAQESEgoFZmlyc3QYCCABKAVIAogBARIRCgRsYXN0GAkgASgFSAOIAQESKwoFd2hlcmUYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKRAQoSTGlzdE1vZGVsc1Jlc3BvbnNlEiAKBm1vZGVscxgBIAMoCzIQLm1vZGVscy52MS5Nb2RlbBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iuAIKElVwZGF0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gBiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgFIAEoCUgCiAEBEhUKDXVwZGF0ZV9maWVsZHMYBiABKAgSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYByABKAgSFQoNc25hcHNob3Rfb25seRgIIAEoCBIcChRhbGxvd19sb29rdXBfcmVidWlsZBgJIAEoCEIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIgChJEZWxldGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiJgoTRGVsZXRlTW9kZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkYKFUR1cGxpY2F0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIPCgduZXdfa2V5GAIgASgJEhAKCG5ld19uYW1lGAMgASgJIjkKFkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwipAEKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIj4KFkdldE1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSJDChdHZXRNb2RlbFZlcnNpb25SZXNwb25zZRIoCgd2ZXJzaW9uGAEgASgLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbiJCChpSZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIj4KG1Jlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCJjChREZXByZWNhdGVkRmllbGRUb3VjaBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIRCgltb2RlbF9rZXkYAyABKAkSEQoJZmllbGRfa2V5GAQgASgJIlYKIk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QSMAoHdG91Y2hlcxgBIAMoCzIfLm1vZGVscy52MS5EZXByZWNhdGVkRmllbGRUb3VjaCI2CiNNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRIPCgd1cGRhdGVkGAEgASgFIvcBChhEZXByZWNhdGVkRmllbGRDYW5kaWRhdGUSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIbW9kZWxfaWQYAyABKAkSEQoJbW9kZWxfa2V5GAQgASgJEhEKCWZpZWxkX2tleRgFIAEoCRIuCgpkZWxldGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9sYXN0X3F1ZXJpZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCEgoQX2xhc3RfcXVlcmllZF9hdCK8AQokTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0EhwKFGdyYWNlX3BlcmlvZF9zZWNvbmRzGAEgASgDEhIKBWZpcnN0GAIgASgFSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARIRCgRsYXN0GAQgASgFSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIrsBCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJBChpEcm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRIRCglmaWVsZF9rZXkYAiABKAkiLgobRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlEg8KB2Ryb3BwZWQYASABKAgiIQoTUHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSJtChRQdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChVVbnB1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiOQoWVW5wdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxHZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKHUdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKhAQobU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0Ij8KHFNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiMAoiQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJGCiNDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCr5AgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA0SEwoPRklFTERfVFlQRV9FTlVNEA4SFwoTRklFTERfVFlQRV9SSUNIVEVYVBAPKpsBChFDYWNoZUNvbnRyb2xTY29wZRIjCh9DQUNIRV9DT05UUk9MX1NDT1BFX1VOU1BFQ0lGSUVEEAASHgoaQ0FDSEVfQ09OVFJPTF9TQ09QRV9QVUJMSUMQARIfChtDQUNIRV9DT05UUk9MX1NDT1BFX1BSSVZBVEUQAhIgChxDQUNIRV9DT05UUk9MX1NDT1BFX05PX0NBQ0hFEAMyuA0KDU1vZGVsc1NlcnZpY2USQwoIR2V0TW9kZWwSGi5tb2RlbHMudjEuR2V0TW9kZWxSZXF1ZXN0GhsubW9kZWxzLnYxLkdldE1vZGVsUmVzcG9uc2USUgoNR2V0TW9kZWxCeUtleRIfLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVxdWVzdBogLm1vZGVscy52MS5HZXRNb2RlbEJ5S2V5UmVzcG9uc2USSQoKTGlzdE1vZGVscxIcLm1vZGVscy52MS5MaXN0TW9kZWxzUmVxdWVzdBodLm1vZGVscy52MS5MaXN0TW9kZWxzUmVzcG9uc2USTAoLQ3JlYXRlTW9kZWwSHS5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkNyZWF0ZU1vZGVsUmVzcG9uc2USTAoLVXBkYXRlTW9kZWwSHS5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLlVwZGF0ZU1vZGVsUmVzcG9uc2USTAoLRGVsZXRlTW9kZWwSHS5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXF1ZXN0Gh4ubW9kZWxzLnYxLkRlbGV0ZU1vZGVsUmVzcG9uc2USVQoORHVwbGljYXRlTW9kZWwSIC5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USWAoPR2V0TW9kZWxWZXJzaW9uEiEubW9kZWxzLnYxLkdldE1vZGVsVmVyc2lvblJlcXVlc3QaIi5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVzcG9uc2USXgoRTGlzdE1vZGVsVmVyc2lvbnMSIy5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXF1ZXN0GiQubW9kZWxzLnYxLkxpc3RNb2RlbFZlcnNpb25zUmVzcG9uc2USZAoTUmVzdG9yZU1vZGVsVmVyc2lvbhIlLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBomLm1vZGVscy52MS5SZXN0b3JlTW9kZWxWZXJzaW9uUmVzcG9uc2USTwoMUHVibGlzaE1vZGVsEh4ubW9kZWxzLnYxLlB1Ymxpc2hNb2RlbFJlcXVlc3QaHy5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVzcG9uc2USVQoOVW5wdWJsaXNoTW9kZWwSIC5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXF1ZXN0GiEubW9kZWxzLnYxLlVucHVibGlzaE1vZGVsUmVzcG9uc2USagoVR2V0TW9kZWxQdWJsaXNoU3RhdHVzEicubW9kZWxzLnYxLkdldE1vZGVsUHVibGlzaFN0YXR1c1JlcXVlc3QaKC5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVzcG9uc2USZwoUU2NoZWR1bGVNb2RlbFB1Ymxpc2gSJi5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0GicubW9kZWxzLnYxLlNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoEi0ubW9kZWxzLnYxLkNhbmNlbFNjaGVkdWxlZE1vZGVsUHVibGlzaFJlcXVlc3QaLi5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVzcG9uc2USfAobTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkEi0ubW9kZWxzLnYxLk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QaLi5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVzcG9uc2USggEKHUxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzEi8ubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVxdWVzdBowLm1vZGVscy52MS5MaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEmQKE0Ryb3BEZXByZWNhdGVkRmllbGQSJS5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlcXVlc3QaJi5tb2RlbHMudjEuRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlQjlaN2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9tb2RlbHMvdjE7bW9kZWxzdjFiBnByb3RvMw", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
602
- var FieldSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 0);
603
- var SharingConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 1);
604
- var ModelConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 2);
605
- var CacheControlConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 3);
606
- var LookupDefinitionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 4);
607
- var ModelSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 6);
608
- var ModelVersionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 7);
609
- var CreateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 8);
610
- var GetModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 10);
611
- var GetModelByKeyRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 12);
612
- var ListModelsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 14);
613
- var UpdateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 16);
614
- var DeleteModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 18);
615
- var DuplicateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 20);
616
- var ListModelVersionsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 22);
617
- var RestoreModelVersionRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 26);
618
- var PublishModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 36);
619
- var GetModelPublishStatusRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 40);
620
- var CacheControlScopeSchema = /* @__PURE__ */ enumDesc3(file_models_v1_models, 1);
617
+ var file_models_v1_models = /* @__PURE__ */ fileDesc5("ChZtb2RlbHMvdjEvbW9kZWxzLnByb3RvEgltb2RlbHMudjEiYQoSUmVsYXRpb25zaGlwQ29uZmlnEikKBGtpbmQYASABKA4yGy5tb2RlbHMudjEuUmVsYXRpb25zaGlwS2luZBIUCgdpbnZlcnNlGAIgASgJSACIAQFCCgoIX2ludmVyc2Ui0gUKBUZpZWxkEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgR0eXBlGAQgASgJEhAKCHJlcXVpcmVkGAUgASgIEhYKCWhlbHBfdGV4dBgGIAEoCUgAiAEBEhgKC3BsYWNlaG9sZGVyGAcgASgJSAGIAQESMgoNZGVmYXVsdF92YWx1ZRgIIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZUgCiAEBEicKBmNvbmZpZxgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFgoJaXRlbV90eXBlGAogASgJSAOIAQESFAoHc3RvcmFnZRgLIAEoCUgEiAEBEhoKDXRlbXBsYXRlX3pvbmUYDCABKAlIBYgBARIXCgp6b25lX29yZGVyGA0gASgFSAaIAQESNgoQcmVmZXJlbmNlX2ZpbHRlchgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIvCgp2YWxpZGF0aW9uGA8gASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlSAiIAQESFgoJcXVlcnlhYmxlGBAgASgISAmIAQESJgoGYWNjZXNzGBEgASgLMhYuY29tbW9uLnYxLkZpZWxkQWNjZXNzEjgKDHJlbGF0aW9uc2hpcBgSIAEoCzIdLm1vZGVscy52MS5SZWxhdGlvbnNoaXBDb25maWdICogBAUIMCgpfaGVscF90ZXh0Qg4KDF9wbGFjZWhvbGRlckIQCg5fZGVmYXVsdF92YWx1ZUIMCgpfaXRlbV90eXBlQgoKCF9zdG9yYWdlQhAKDl90ZW1wbGF0ZV96b25lQg0KC196b25lX29yZGVyQhMKEV9yZWZlcmVuY2VfZmlsdGVyQg0KC192YWxpZGF0aW9uQgwKCl9xdWVyeWFibGVCDwoNX3JlbGF0aW9uc2hpcCI8Cg1TaGFyaW5nQ29uZmlnEg8KB2VuYWJsZWQYASABKAgSGgoScmVxdWlyZV9hY2NlcHRhbmNlGAIgASgIIvQFCgtNb2RlbENvbmZpZxISCgp2ZXJzaW9uaW5nGAEgASgIEhIKCnB1Ymxpc2hpbmcYAiABKAgSEAoIdmFyaWFudHMYAyABKAgSDgoGaW5saW5lGAQgASgIEhcKD2N1c3RvbWVyX3Njb3BlZBgFIAEoCBIuCgdzaGFyaW5nGAYgASgLMhgubW9kZWxzLnYxLlNoYXJpbmdDb25maWdIAIgBARIYCgtwbHVyYWxfbmFtZRgHIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAggASgJSAKIAQESFQoIY2F0ZWdvcnkYCSABKAlIA4gBARIRCgRpY29uGAogASgJSASIAQESGgoNZGlzcGxheV9maWVsZBgLIAEoCUgFiAEBEhUKDXN5c3RlbV9lbnRpdHkYDSABKAgSFgoJZGVsZXRhYmxlGA4gASgISAaIAQESFQoIZWRpdGFibGUYDyABKAhIB4gBARI1Cg9tZXRhZGF0YV9zY2hlbWEYECABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYESABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESFwoKcGx1cmFsX2tleRgSIAEoCUgKiAEBEiwKB2xvb2t1cHMYEyADKAsyGy5tb2RlbHMudjEuTG9va3VwRGVmaW5pdGlvbhI5Cg1jYWNoZV9jb250cm9sGBQgASgLMh0ubW9kZWxzLnYxLkNhY2hlQ29udHJvbENvbmZpZ0gLiAEBQgoKCF9zaGFyaW5nQg4KDF9wbHVyYWxfbmFtZUIOCgxfZGVzY3JpcHRpb25CCwoJX2NhdGVnb3J5QgcKBV9pY29uQhAKDl9kaXNwbGF5X2ZpZWxkQgwKCl9kZWxldGFibGVCCwoJX2VkaXRhYmxlQhIKEF9tZXRhZGF0YV9zY2hlbWFCCAoGX2hvb2tzQg0KC19wbHVyYWxfa2V5QhAKDl9jYWNoZV9jb250cm9sIlIKEkNhY2hlQ29udHJvbENvbmZpZxIPCgdtYXhfYWdlGAEgASgFEisKBXNjb3BlGAIgASgOMhwubW9kZWxzLnYxLkNhY2hlQ29udHJvbFNjb3BlIj4KEExvb2t1cERlZmluaXRpb24SDgoGa2V5X2J5GAEgAygJEhEKBG5hbWUYAiABKAlIAIgBAUIHCgVfbmFtZSKJAQoRTW9kZWxDYXBhYmlsaXRpZXMSFAoMaXNfdmVyc2lvbmVkGAEgASgIEhYKDmlzX3B1Ymxpc2hhYmxlGAIgASgIEhQKDGhhc192YXJpYW50cxgDIAEoCBIXCg9jdXN0b21lcl9zY29wZWQYBCABKAgSFwoPc2hhcmluZ19lbmFibGVkGAUgASgIIo8HCgVNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSJgoGY29uZmlnGAUgASgLMhYubW9kZWxzLnYxLk1vZGVsQ29uZmlnEhYKCWNvbmZpZ19pZBgGIAEoCUgAiAEBEjIKDGNhcGFiaWxpdGllcxgHIAEoCzIcLm1vZGVscy52MS5Nb2RlbENhcGFiaWxpdGllcxIfChJjdXJyZW50X3ZlcnNpb25faWQYCCABKAlIAYgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYCSABKAVIAogBARIRCgl0ZW5hbnRfaWQYCiABKAkSEgoKcHJvamVjdF9pZBgLIAEoCRIXCgpjcmVhdGVkX2J5GBQgASgJSAOIAQESFwoKdXBkYXRlZF9ieRgVIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYHiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYHyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiwKEmxhc3RfcHVzaGVkX2ZpZWxkcxgoIAMoCzIQLm1vZGVscy52MS5GaWVsZBI3Cg5sYXN0X3B1c2hlZF9hdBgpIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIhChRwdWJsaXNoZWRfdmVyc2lvbl9pZBgqIAEoCUgGiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgHiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAiIAQFCDAoKX2NvbmZpZ19pZEIVChNfY3VycmVudF92ZXJzaW9uX2lkQhsKGV9wdWJsaXNoZWRfdmVyc2lvbl9udW1iZXJCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnlCEQoPX2xhc3RfcHVzaGVkX2F0QhcKFV9wdWJsaXNoZWRfdmVyc2lvbl9pZEIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQiwgIKDE1vZGVsVmVyc2lvbhIKCgJpZBgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIgCgZmaWVsZHMYBCADKAsyEC5tb2RlbHMudjEuRmllbGQSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5Is0BChJDcmVhdGVNb2RlbFJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gAiAEBEhYKCWNvbmZpZ19pZBgFIAEoCUgBiAEBEhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAYgASgIQgkKB19jb25maWdCDAoKX2NvbmZpZ19pZCI2ChNDcmVhdGVNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIh0KD0dldE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSIzChBHZXRNb2RlbFJlc3BvbnNlEh8KBW1vZGVsGAEgASgLMhAubW9kZWxzLnYxLk1vZGVsIiMKFEdldE1vZGVsQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI4ChVHZXRNb2RlbEJ5S2V5UmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiwgEKEUxpc3RNb2RlbHNSZXF1ZXN0EhIKBWFmdGVyGAYgASgJSACIAQESEwoGYmVmb3JlGAcgASgJSAGIAQESEgoFZmlyc3QYCCABKAVIAogBARIRCgRsYXN0GAkgASgFSAOIAQESKwoFd2hlcmUYCiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SASIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKRAQoSTGlzdE1vZGVsc1Jlc3BvbnNlEiAKBm1vZGVscxgBIAMoCzIQLm1vZGVscy52MS5Nb2RlbBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iuAIKElVwZGF0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESIAoGZmllbGRzGAMgAygLMhAubW9kZWxzLnYxLkZpZWxkEisKBmNvbmZpZxgEIAEoCzIWLm1vZGVscy52MS5Nb2RlbENvbmZpZ0gBiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgFIAEoCUgCiAEBEhUKDXVwZGF0ZV9maWVsZHMYBiABKAgSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYByABKAgSFQoNc25hcHNob3Rfb25seRgIIAEoCBIcChRhbGxvd19sb29rdXBfcmVidWlsZBgJIAEoCEIHCgVfbmFtZUIJCgdfY29uZmlnQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24iNgoTVXBkYXRlTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIgChJEZWxldGVNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiJgoTRGVsZXRlTW9kZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIkYKFUR1cGxpY2F0ZU1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCRIPCgduZXdfa2V5GAIgASgJEhAKCG5ld19uYW1lGAMgASgJIjkKFkR1cGxpY2F0ZU1vZGVsUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwipAEKGExpc3RNb2RlbFZlcnNpb25zUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoZTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRIpCgh2ZXJzaW9ucxgBIAMoCzIXLm1vZGVscy52MS5Nb2RlbFZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIj4KFkdldE1vZGVsVmVyc2lvblJlcXVlc3QSEAoIbW9kZWxfaWQYASABKAkSEgoKdmVyc2lvbl9pZBgCIAEoCSJDChdHZXRNb2RlbFZlcnNpb25SZXNwb25zZRIoCgd2ZXJzaW9uGAEgASgLMhcubW9kZWxzLnYxLk1vZGVsVmVyc2lvbiJCChpSZXN0b3JlTW9kZWxWZXJzaW9uUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRISCgp2ZXJzaW9uX2lkGAIgASgJIj4KG1Jlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCJjChREZXByZWNhdGVkRmllbGRUb3VjaBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIRCgltb2RlbF9rZXkYAyABKAkSEQoJZmllbGRfa2V5GAQgASgJIlYKIk1hcmtEZXByZWNhdGVkRmllbGRzUXVlcmllZFJlcXVlc3QSMAoHdG91Y2hlcxgBIAMoCzIfLm1vZGVscy52MS5EZXByZWNhdGVkRmllbGRUb3VjaCI2CiNNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRIPCgd1cGRhdGVkGAEgASgFIvcBChhEZXByZWNhdGVkRmllbGRDYW5kaWRhdGUSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIbW9kZWxfaWQYAyABKAkSEQoJbW9kZWxfa2V5GAQgASgJEhEKCWZpZWxkX2tleRgFIAEoCRIuCgpkZWxldGVkX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9sYXN0X3F1ZXJpZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCEgoQX2xhc3RfcXVlcmllZF9hdCK8AQokTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0EhwKFGdyYWNlX3BlcmlvZF9zZWNvbmRzGAEgASgDEhIKBWZpcnN0GAIgASgFSACIAQESEgoFYWZ0ZXIYAyABKAlIAYgBARIRCgRsYXN0GAQgASgFSAKIAQESEwoGYmVmb3JlGAUgASgJSAOIAQFCCAoGX2ZpcnN0QggKBl9hZnRlckIHCgVfbGFzdEIJCgdfYmVmb3JlIrsBCiVMaXN0RGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlc1Jlc3BvbnNlEjcKCmNhbmRpZGF0ZXMYASADKAsyIy5tb2RlbHMudjEuRGVwcmVjYXRlZEZpZWxkQ2FuZGlkYXRlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJBChpEcm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBIQCghtb2RlbF9pZBgBIAEoCRIRCglmaWVsZF9rZXkYAiABKAkiLgobRHJvcERlcHJlY2F0ZWRGaWVsZFJlc3BvbnNlEg8KB2Ryb3BwZWQYASABKAgiIQoTUHVibGlzaE1vZGVsUmVxdWVzdBIKCgJpZBgBIAEoCSJtChRQdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbBI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIjChVVbnB1Ymxpc2hNb2RlbFJlcXVlc3QSCgoCaWQYASABKAkiOQoWVW5wdWJsaXNoTW9kZWxSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCIqChxHZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXF1ZXN0EgoKAmlkGAEgASgJIkoKHUdldE1vZGVsUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKhAQobU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0Ij8KHFNjaGVkdWxlTW9kZWxQdWJsaXNoUmVzcG9uc2USHwoFbW9kZWwYASABKAsyEC5tb2RlbHMudjEuTW9kZWwiMAoiQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJGCiNDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRIfCgVtb2RlbBgBIAEoCzIQLm1vZGVscy52MS5Nb2RlbCr5AgoJRmllbGRUeXBlEhoKFkZJRUxEX1RZUEVfVU5TUEVDSUZJRUQQABITCg9GSUVMRF9UWVBFX1RFWFQQARIVChFGSUVMRF9UWVBFX05VTUJFUhACEhYKEkZJRUxEX1RZUEVfQk9PTEVBThADEhMKD0ZJRUxEX1RZUEVfREFURRAEEhUKEUZJRUxEX1RZUEVfU0VMRUNUEAUSEwoPRklFTERfVFlQRV9KU09OEAYSEwoPRklFTERfVFlQRV9MSVNUEAcSFAoQRklFTERfVFlQRV9NT0RFTBAIEhgKFEZJRUxEX1RZUEVfUkVGRVJFTkNFEAkSEwoPRklFTERfVFlQRV9GSUxFEAoSFAoQRklFTERfVFlQRV9JTUFHRRALEhQKEEZJRUxEX1RZUEVfVklERU8QDBIXChNGSUVMRF9UWVBFX0ZMRVhJQkxFEA0SEwoPRklFTERfVFlQRV9FTlVNEA4SFwoTRklFTERfVFlQRV9SSUNIVEVYVBAPKnsKEFJlbGF0aW9uc2hpcEtpbmQSIQodUkVMQVRJT05TSElQX0tJTkRfVU5TUEVDSUZJRUQQABIhCh1SRUxBVElPTlNISVBfS0lORF9BU1NPQ0lBVElPThABEiEKHVJFTEFUSU9OU0hJUF9LSU5EX0NPTVBPU0lUSU9OEAIqmwEKEUNhY2hlQ29udHJvbFNjb3BlEiMKH0NBQ0hFX0NPTlRST0xfU0NPUEVfVU5TUEVDSUZJRUQQABIeChpDQUNIRV9DT05UUk9MX1NDT1BFX1BVQkxJQxABEh8KG0NBQ0hFX0NPTlRST0xfU0NPUEVfUFJJVkFURRACEiAKHENBQ0hFX0NPTlRST0xfU0NPUEVfTk9fQ0FDSEUQAzK4DQoNTW9kZWxzU2VydmljZRJDCghHZXRNb2RlbBIaLm1vZGVscy52MS5HZXRNb2RlbFJlcXVlc3QaGy5tb2RlbHMudjEuR2V0TW9kZWxSZXNwb25zZRJSCg1HZXRNb2RlbEJ5S2V5Eh8ubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXF1ZXN0GiAubW9kZWxzLnYxLkdldE1vZGVsQnlLZXlSZXNwb25zZRJJCgpMaXN0TW9kZWxzEhwubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXF1ZXN0Gh0ubW9kZWxzLnYxLkxpc3RNb2RlbHNSZXNwb25zZRJMCgtDcmVhdGVNb2RlbBIdLm1vZGVscy52MS5DcmVhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuQ3JlYXRlTW9kZWxSZXNwb25zZRJMCgtVcGRhdGVNb2RlbBIdLm1vZGVscy52MS5VcGRhdGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuVXBkYXRlTW9kZWxSZXNwb25zZRJMCgtEZWxldGVNb2RlbBIdLm1vZGVscy52MS5EZWxldGVNb2RlbFJlcXVlc3QaHi5tb2RlbHMudjEuRGVsZXRlTW9kZWxSZXNwb25zZRJVCg5EdXBsaWNhdGVNb2RlbBIgLm1vZGVscy52MS5EdXBsaWNhdGVNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuRHVwbGljYXRlTW9kZWxSZXNwb25zZRJYCg9HZXRNb2RlbFZlcnNpb24SIS5tb2RlbHMudjEuR2V0TW9kZWxWZXJzaW9uUmVxdWVzdBoiLm1vZGVscy52MS5HZXRNb2RlbFZlcnNpb25SZXNwb25zZRJeChFMaXN0TW9kZWxWZXJzaW9ucxIjLm1vZGVscy52MS5MaXN0TW9kZWxWZXJzaW9uc1JlcXVlc3QaJC5tb2RlbHMudjEuTGlzdE1vZGVsVmVyc2lvbnNSZXNwb25zZRJkChNSZXN0b3JlTW9kZWxWZXJzaW9uEiUubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXF1ZXN0GiYubW9kZWxzLnYxLlJlc3RvcmVNb2RlbFZlcnNpb25SZXNwb25zZRJPCgxQdWJsaXNoTW9kZWwSHi5tb2RlbHMudjEuUHVibGlzaE1vZGVsUmVxdWVzdBofLm1vZGVscy52MS5QdWJsaXNoTW9kZWxSZXNwb25zZRJVCg5VbnB1Ymxpc2hNb2RlbBIgLm1vZGVscy52MS5VbnB1Ymxpc2hNb2RlbFJlcXVlc3QaIS5tb2RlbHMudjEuVW5wdWJsaXNoTW9kZWxSZXNwb25zZRJqChVHZXRNb2RlbFB1Ymxpc2hTdGF0dXMSJy5tb2RlbHMudjEuR2V0TW9kZWxQdWJsaXNoU3RhdHVzUmVxdWVzdBooLm1vZGVscy52MS5HZXRNb2RlbFB1Ymxpc2hTdGF0dXNSZXNwb25zZRJnChRTY2hlZHVsZU1vZGVsUHVibGlzaBImLm1vZGVscy52MS5TY2hlZHVsZU1vZGVsUHVibGlzaFJlcXVlc3QaJy5tb2RlbHMudjEuU2NoZWR1bGVNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtDYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2gSLS5tb2RlbHMudjEuQ2FuY2VsU2NoZWR1bGVkTW9kZWxQdWJsaXNoUmVxdWVzdBouLm1vZGVscy52MS5DYW5jZWxTY2hlZHVsZWRNb2RlbFB1Ymxpc2hSZXNwb25zZRJ8ChtNYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWQSLS5tb2RlbHMudjEuTWFya0RlcHJlY2F0ZWRGaWVsZHNRdWVyaWVkUmVxdWVzdBouLm1vZGVscy52MS5NYXJrRGVwcmVjYXRlZEZpZWxkc1F1ZXJpZWRSZXNwb25zZRKCAQodTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXMSLy5tb2RlbHMudjEuTGlzdERlcHJlY2F0ZWRGaWVsZENhbmRpZGF0ZXNSZXF1ZXN0GjAubW9kZWxzLnYxLkxpc3REZXByZWNhdGVkRmllbGRDYW5kaWRhdGVzUmVzcG9uc2USZAoTRHJvcERlcHJlY2F0ZWRGaWVsZBIlLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVxdWVzdBomLm1vZGVscy52MS5Ecm9wRGVwcmVjYXRlZEZpZWxkUmVzcG9uc2VCOVo3Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL21vZGVscy92MTttb2RlbHN2MWIGcHJvdG8z", [file_google_protobuf_struct2, file_google_protobuf_timestamp3, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
618
+ var RelationshipConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 0);
619
+ var FieldSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 1);
620
+ var SharingConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 2);
621
+ var ModelConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 3);
622
+ var CacheControlConfigSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 4);
623
+ var LookupDefinitionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 5);
624
+ var ModelSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 7);
625
+ var ModelVersionSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 8);
626
+ var CreateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 9);
627
+ var GetModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 11);
628
+ var GetModelByKeyRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 13);
629
+ var ListModelsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 15);
630
+ var UpdateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 17);
631
+ var DeleteModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 19);
632
+ var DuplicateModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 21);
633
+ var ListModelVersionsRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 23);
634
+ var GetModelVersionRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 25);
635
+ var RestoreModelVersionRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 27);
636
+ var PublishModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 37);
637
+ var UnpublishModelRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 39);
638
+ var GetModelPublishStatusRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 41);
639
+ var ScheduleModelPublishRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 43);
640
+ var CancelScheduledModelPublishRequestSchema = /* @__PURE__ */ messageDesc5(file_models_v1_models, 45);
641
+ var RelationshipKindSchema = /* @__PURE__ */ enumDesc3(file_models_v1_models, 1);
642
+ var RelationshipKind = /* @__PURE__ */ tsEnum3(RelationshipKindSchema);
643
+ var CacheControlScopeSchema = /* @__PURE__ */ enumDesc3(file_models_v1_models, 2);
621
644
  var CacheControlScope = /* @__PURE__ */ tsEnum3(CacheControlScopeSchema);
622
645
  var ModelsService = /* @__PURE__ */ serviceDesc2(file_models_v1_models, 0);
623
646
 
@@ -634,6 +657,7 @@ var RuleOperandSchema = /* @__PURE__ */ messageDesc6(file_expressions_v1_express
634
657
  // ../../packages/proto-ts/src/records/v1/records_pb.js
635
658
  var file_records_v1_records = /* @__PURE__ */ fileDesc7("ChhyZWNvcmRzL3YxL3JlY29yZHMucHJvdG8SCnJlY29yZHMudjEihA0KBlJlY29yZBIKCgJpZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSGAoLbmF0dXJhbF9rZXkYAyABKAlIAIgBARIWCglwYXJlbnRfaWQYBCABKAlIAYgBARIrCgtyZWNvcmRfdHlwZRgFIAEoDjIWLnJlY29yZHMudjEuUmVjb3JkVHlwZRIlCgRkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIuCghtZXRhZGF0YRgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIYCgtjdXN0b21lcl9pZBgIIAEoCUgDiAEBEhEKCXRlbmFudF9pZBgKIAEoCRISCgpwcm9qZWN0X2lkGAsgASgJEhcKCmNyZWF0ZWRfYnkYFCABKAlIBIgBARIXCgp1cGRhdGVkX2J5GBUgASgJSAWIAQESLgoKY3JlYXRlZF9hdBgeIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgfIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdmVyc2lvbl9udW1iZXIYKCABKAVIBogBARIZCgxjb250ZW50X2hhc2gYKSABKAlIB4gBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YKiABKAlICIgBARIbCg5wdWJsaXNoX3N0YXR1cxgrIAEoCUgJiAEBEj0KFHNjaGVkdWxlZF9wdWJsaXNoX2F0GCwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBEj8KFnNjaGVkdWxlZF91bnB1Ymxpc2hfYXQYLSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAuIAQESGAoLdmFyaWFudF9rZXkYMiABKAlIDIgBARIZCgx2YXJpYW50X25hbWUYMyABKAlIDYgBARIgChN2YXJpYW50X2Rlc2NyaXB0aW9uGDQgASgJSA6IAQESFwoKY2F0YWxvZ19pZBg1IAEoCUgPiAEBEhUKCHByaW9yaXR5GDYgASgFSBCIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGDcgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IEYgBARIXCgppc19kZWZhdWx0GDggASgISBKIAQESHwoSY3VycmVudF92ZXJzaW9uX2lkGDwgASgJSBOIAQESIQoUcHVibGlzaGVkX3ZlcnNpb25faWQYPSABKAlIFIgBARIlChhwdWJsaXNoZWRfdmVyc2lvbl9udW1iZXIYPiABKAVIFYgBARI1CgxwdWJsaXNoZWRfYXQYPyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSBaIAQESGQoMcHVibGlzaGVkX2J5GEAgASgJSBeIAQESEwoLY2FuX3B1Ymxpc2gYQSABKAgSFQoNY2FuX3VucHVibGlzaBhCIAEoCBIfChdoYXNfdW5wdWJsaXNoZWRfY2hhbmdlcxhDIAEoCBIdChBtb2RlbF92ZXJzaW9uX2lkGEYgASgJSBiIAQFCDgoMX25hdHVyYWxfa2V5QgwKCl9wYXJlbnRfaWRCCwoJX21ldGFkYXRhQg4KDF9jdXN0b21lcl9pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieUIRCg9fdmVyc2lvbl9udW1iZXJCDwoNX2NvbnRlbnRfaGFzaEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQhEKD19wdWJsaXNoX3N0YXR1c0IXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXRCDgoMX3ZhcmlhbnRfa2V5Qg8KDV92YXJpYW50X25hbWVCFgoUX3ZhcmlhbnRfZGVzY3JpcHRpb25CDQoLX2NhdGFsb2dfaWRCCwoJX3ByaW9yaXR5QhIKEF90YXJnZXRpbmdfcnVsZXNCDQoLX2lzX2RlZmF1bHRCFQoTX2N1cnJlbnRfdmVyc2lvbl9pZEIXChVfcHVibGlzaGVkX3ZlcnNpb25faWRCGwoZX3B1Ymxpc2hlZF92ZXJzaW9uX251bWJlckIPCg1fcHVibGlzaGVkX2F0Qg8KDV9wdWJsaXNoZWRfYnlCEwoRX21vZGVsX3ZlcnNpb25faWQi9QEKD1B1Ymxpc2hTY2hlZHVsZRISCgp2ZXJzaW9uX2lkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAUgASgJSAGIAQFCDwoNX3VucHVibGlzaF9hdEINCgtfY3JlYXRlZF9ieSIuCglTb3J0RmllbGQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKFAgoOQmF0Y2hPcGVyYXRpb24SLAoEdHlwZRgBIAEoDjIeLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25UeXBlEg8KAmlkGAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQESGAoLbmF0dXJhbF9rZXkYBCABKAlIAogBARIqCgRkYXRhGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhgKC2N1c3RvbWVyX2lkGAYgASgJSASIAQFCBQoDX2lkQgwKCl9tb2RlbF9rZXlCDgoMX25hdHVyYWxfa2V5QgcKBV9kYXRhQg4KDF9jdXN0b21lcl9pZCKIAQoUQmF0Y2hPcGVyYXRpb25SZXN1bHQSDQoFaW5kZXgYASABKAUSDwoHc3VjY2VzcxgCIAEoCBInCgZyZWNvcmQYAyABKAsyEi5yZWNvcmRzLnYxLlJlY29yZEgAiAEBEhIKBWVycm9yGAQgASgJSAGIAQFCCQoHX3JlY29yZEIICgZfZXJyb3IimAIKE0NyZWF0ZVJlY29yZFJlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQESJQoEZGF0YRgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGAoLY3VzdG9tZXJfaWQYBCABKAlIAYgBARIuCghtZXRhZGF0YRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YBiABKAlIA4gBAUIOCgxfbmF0dXJhbF9rZXlCDgoMX2N1c3RvbWVyX2lkQgsKCV9tZXRhZGF0YUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIqYBChRDcmVhdGVSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIoCgd2YXJpYW50GAIgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAIgBARIoCgd2ZXJzaW9uGAMgASgLMhIucmVjb3Jkcy52MS5SZWNvcmRIAYgBAUIKCghfdmFyaWFudEIKCghfdmVyc2lvbiIeChBHZXRSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldFJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIj8KFUdldFJlY29yZEJ5S2V5UmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkiPAoWR2V0UmVjb3JkQnlLZXlSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCJCChlHZXRSZWNvcmRCeUtleU9ySWRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRISCgppZGVudGlmaWVyGAIgASgJIkAKGkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkItYCChJMaXN0UmVjb3Jkc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEiMKBHNvcnQYAiADKAsyFS5yZWNvcmRzLnYxLlNvcnRGaWVsZBIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEhMKBnNlYXJjaBgEIAEoCUgBiAEBEg8KB3ByZXZpZXcYBSABKAgSKwoFd2hlcmUYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESEgoFYWZ0ZXIYByABKAlIA4gBARITCgZiZWZvcmUYCCABKAlIBIgBARISCgVmaXJzdBgJIAEoBUgFiAEBEhEKBGxhc3QYCiABKAVIBogBAUIOCgxfY3VzdG9tZXJfaWRCCQoHX3NlYXJjaEIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpUBChNMaXN0UmVjb3Jkc1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8imwIKE1VwZGF0ZVJlY29yZFJlcXVlc3QSCgoCaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEhgKC3ZhcmlhbnRfa2V5GAQgASgJSAGIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAUgASgJSAKIAQESMgoMcmVwbGFjZV9kYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg4KDF9uYXR1cmFsX2tleUIOCgxfdmFyaWFudF9rZXlCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkIPCg1fcmVwbGFjZV9kYXRhIjoKFFVwZGF0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIkoKFUF1dG9TYXZlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIlCgRkYXRhGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJDChZBdXRvU2F2ZVJlY29yZFJlc3BvbnNlEhEKCXBlcnNpc3RlZBgBIAEoCBIWCg5za2lwcGVkX3JlYXNvbhgCIAEoCSIhChNEZWxldGVSZWNvcmRSZXF1ZXN0EgoKAmlkGAEgASgJIicKFERlbGV0ZVJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgipwEKE1Vwc2VydFJlY29yZFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJbW9kZWxfa2V5GAMgASgJEhMKC25hdHVyYWxfa2V5GAQgASgJEiUKBGRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhoKEmNoYW5nZV9kZXNjcmlwdGlvbhgGIAEoCSJLChRVcHNlcnRSZWNvcmRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZBIPCgdjcmVhdGVkGAIgASgIIk4KHEJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QSLgoKb3BlcmF0aW9ucxgBIAMoCzIaLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb24iUgodQmF0Y2hSZWNvcmRPcGVyYXRpb25zUmVzcG9uc2USMQoHcmVzdWx0cxgBIAMoCzIgLnJlY29yZHMudjEuQmF0Y2hPcGVyYXRpb25SZXN1bHQinQEKGEJ1bGtVcGRhdGVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSKwoFd2hlcmUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESLAoGdXBkYXRlGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBQggKBl93aGVyZUIJCgdfdXBkYXRlIjcKGUJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USDQoFY291bnQYASABKAUSCwoDaWRzGAIgAygJIjIKHUJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCSI5Ch5CYWNrZmlsbFF1ZXJ5YWJsZUluZGV4UmVzcG9uc2USFwoPcmVjb3Jkc19pbmRleGVkGAEgASgFIjAKG0JhY2tmaWxsTW9kZWxJbmRleGVzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiYQocQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXNwb25zZRIeChZsb29rdXBzX3JlY29yZHNfd2Fsa2VkGAEgASgFEiEKGXF1ZXJ5YWJsZV9yZWNvcmRzX2luZGV4ZWQYAiABKAUiVgoWRHVwbGljYXRlUmVjb3JkUmVxdWVzdBIKCgJpZBgBIAEoCRIcCg9uZXdfbmF0dXJhbF9rZXkYAiABKAlIAIgBAUISChBfbmV3X25hdHVyYWxfa2V5Ij0KF0R1cGxpY2F0ZVJlY29yZFJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIlAKG0R1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBILCgNpZHMYASADKAkSFgoJbW9kZWxfa2V5GAIgASgJSACIAQFCDAoKX21vZGVsX2tleSJDChxEdXBsaWNhdGVSZWNvcmRzQnVsa1Jlc3BvbnNlEiMKB3JlY29yZHMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZCIrChVQdWJsaXNoVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCSI8ChZQdWJsaXNoVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIisKFlVucHVibGlzaFJlY29yZFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJIioKF1VucHVibGlzaFJlY29yZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiLAoWUmV2ZXJ0VG9WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJIj0KF1JldmVydFRvVmVyc2lvblJlc3BvbnNlEiIKBnJlY29yZBgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIqYBChlMaXN0UmVjb3JkVmVyc2lvbnNSZXF1ZXN0EhEKCXBhcmVudF9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKdAQoaTGlzdFJlY29yZFZlcnNpb25zUmVzcG9uc2USJAoIdmVyc2lvbnMYASADKAsyEi5yZWNvcmRzLnYxLlJlY29yZBINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iZQoUQ3JlYXRlVmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhMKC3ZhcmlhbnRfa2V5GAIgASgJEiUKBGRhdGEYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjwKFUNyZWF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQimgEKFFVwZGF0ZVZhcmlhbnRSZXF1ZXN0EhIKCnZhcmlhbnRfaWQYASABKAkSJQoEZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNAoObWV0YWRhdGFfcGF0Y2gYAyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCEQoPX21ldGFkYXRhX3BhdGNoIjwKFVVwZGF0ZVZhcmlhbnRSZXNwb25zZRIjCgd2YXJpYW50GAEgASgLMhIucmVjb3Jkcy52MS5SZWNvcmQiKgoURGVsZXRlVmFyaWFudFJlcXVlc3QSEgoKdmFyaWFudF9pZBgBIAEoCSIoChVEZWxldGVWYXJpYW50UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJBChhTZXREZWZhdWx0VmFyaWFudFJlcXVlc3QSEQoJcmVjb3JkX2lkGAEgASgJEhIKCnZhcmlhbnRfaWQYAiABKAkiPwoZU2V0RGVmYXVsdFZhcmlhbnRSZXNwb25zZRIiCgZyZWNvcmQYASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKmAQoZTGlzdFJlY29yZFZhcmlhbnRzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSEgoFYWZ0ZXIYAiABKAlIAIgBARITCgZiZWZvcmUYAyABKAlIAYgBARISCgVmaXJzdBgEIAEoBUgCiAEBEhEKBGxhc3QYBSABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QinQEKGkxpc3RSZWNvcmRWYXJpYW50c1Jlc3BvbnNlEiQKCHZhcmlhbnRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqoBChxTY2hlZHVsZVJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiRAodU2NoZWR1bGVSZWNvcmRQdWJsaXNoUmVzcG9uc2USIwoHdmVyc2lvbhgBIAEoCzISLnJlY29yZHMudjEuUmVjb3JkIjkKI0NhbmNlbFNjaGVkdWxlZFJlY29yZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiSwokQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEiMKB3ZlcnNpb24YASABKAsyEi5yZWNvcmRzLnYxLlJlY29yZCKpAgodTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1JlcXVlc3QSLQoEZnJvbRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIrCgJ0bxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARIWCgltb2RlbF9rZXkYAyABKAlIAogBARISCgVhZnRlchgEIAEoCUgDiAEBEhMKBmJlZm9yZRgFIAEoCUgEiAEBEhIKBWZpcnN0GAYgASgFSAWIAQESEQoEbGFzdBgHIAEoBUgGiAEBQgcKBV9mcm9tQgUKA190b0IMCgpfbW9kZWxfa2V5QggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKhAQoeTGlzdFNjaGVkdWxlZFB1Ymxpc2hlc1Jlc3BvbnNlEiQKCHZlcnNpb25zGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjAKGkdldFNjaGVkdWxlZFB1Ymxpc2hSZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkiTAobR2V0U2NoZWR1bGVkUHVibGlzaFJlc3BvbnNlEi0KCHNjaGVkdWxlGAEgASgLMhsucmVjb3Jkcy52MS5QdWJsaXNoU2NoZWR1bGUi8gEKGExpc3REcmFmdFZlcnNpb25zUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBARITCgZzZWFyY2gYAiABKAlIAYgBARISCgVhZnRlchgGIAEoCUgCiAEBEhMKBmJlZm9yZRgHIAEoCUgDiAEBEhIKBWZpcnN0GAggASgFSASIAQESEQoEbGFzdBgJIAEoBUgFiAEBEhgKEGRlZHVwZV9ieV9wYXJlbnQYBSABKAhCDAoKX21vZGVsX2tleUIJCgdfc2VhcmNoQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKcAQoZTGlzdERyYWZ0VmVyc2lvbnNSZXNwb25zZRIkCgh2ZXJzaW9ucxgBIAMoCzISLnJlY29yZHMudjEuUmVjb3JkEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIyChtCYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QSEwoLdmVyc2lvbl9pZHMYASADKAkiXAocQmF0Y2hQdWJsaXNoVmVyc2lvbnNSZXNwb25zZRIjCgdyZWNvcmRzGAEgAygLMhIucmVjb3Jkcy52MS5SZWNvcmQSFwoPcHVibGlzaGVkX2NvdW50GAIgASgFIrkBChpCYXRjaFJlc29sdmVSZWNvcmRzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkSEgoKcmVjb3JkX2lkcxgCIAMoCRIYCgtjdXN0b21lcl9pZBgDIAEoCUgAiAEBEi0KB2NvbnRleHQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESDwoHcHJldmlldxgFIAEoCEIOCgxfY3VzdG9tZXJfaWRCCgoIX2NvbnRleHQiSgobQmF0Y2hSZXNvbHZlUmVjb3Jkc1Jlc3BvbnNlEisKB3JlY29yZHMYASADKAsyGi5yZWNvcmRzLnYxLlJlc29sdmVkUmVjb3JkIs0CCg5SZXNvbHZlZFJlY29yZBIRCglyZWNvcmRfaWQYASABKAkSEQoJbW9kZWxfa2V5GAIgASgJEhgKC25hdHVyYWxfa2V5GAMgASgJSACIAQESJQoEZGF0YRgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIbWV0YWRhdGEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhcKCnZhcmlhbnRfaWQYBiABKAlIAYgBARIRCgloYXNfZHJhZnQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdHVyYWxfa2V5Qg0KC192YXJpYW50X2lkIi8KGUxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QSEgoKcmVjb3JkX2lkcxgBIAMoCSI4ChBSZWNvcmRNb2RlbEVudHJ5EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkiSwoaTG9va3VwUmVjb3JkTW9kZWxzUmVzcG9uc2USLQoHZW50cmllcxgBIAMoCzIcLnJlY29yZHMudjEuUmVjb3JkTW9kZWxFbnRyeSKwAQoTR2xvYmFsU2VhcmNoUmVxdWVzdBINCgVxdWVyeRgBIAEoCRISCgptb2RlbF9rZXlzGAIgAygJEhIKBWFmdGVyGAMgASgJSACIAQESEwoGYmVmb3JlGAQgASgJSAGIAQESEgoFZmlyc3QYBSABKAVIAogBARIRCgRsYXN0GAYgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpEBChBTZWFyY2hSZXN1bHRJdGVtEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg0KBXNjb3JlGAUgASgBQg4KDF9uYXR1cmFsX2tleSKgAQoUR2xvYmFsU2VhcmNoUmVzcG9uc2USLQoHcmVjb3JkcxgBIAMoCzIcLnJlY29yZHMudjEuU2VhcmNoUmVzdWx0SXRlbRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ioQEKDkVtYmVkZGluZ1N0YXRzEhEKCW1vZGVsX2tleRgBIAEoCRIVCg10b3RhbF9yZWNvcmRzGAIgASgFEhgKEGVtYmVkZGVkX3JlY29yZHMYAyABKAUSFwoPcGVuZGluZ19yZWNvcmRzGAQgASgFEh0KEGxhc3RfZW1iZWRkZWRfYXQYBSABKAlIAIgBAUITChFfbGFzdF9lbWJlZGRlZF9hdCJ1Cg9SZWNvcmRFbWJlZGRpbmcSEQoJcmVjb3JkX2lkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRISCgpkaW1lbnNpb25zGAMgASgFEhgKC2VtYmVkZGVkX2F0GAQgASgJSACIAQFCDgoMX2VtYmVkZGVkX2F0IpMBCg1TaW1pbGFyUmVjb3JkEgoKAmlkGAEgASgJEhEKCW1vZGVsX2tleRgCIAEoCRIYCgtuYXR1cmFsX2tleRgDIAEoCUgAiAEBEiUKBGRhdGEYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhIKCnNpbWlsYXJpdHkYBSABKAFCDgoMX25hdHVyYWxfa2V5IkAKGEdldEVtYmVkZGluZ1N0YXRzUmVxdWVzdBIWCgltb2RlbF9rZXkYASABKAlIAIgBAUIMCgpfbW9kZWxfa2V5IkYKGUdldEVtYmVkZGluZ1N0YXRzUmVzcG9uc2USKQoFc3RhdHMYASADKAsyGi5yZWNvcmRzLnYxLkVtYmVkZGluZ1N0YXRzIi8KGkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSJOChtHZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USLwoKZW1iZWRkaW5ncxgBIAMoCzIbLnJlY29yZHMudjEuUmVjb3JkRW1iZWRkaW5nIswBChlGaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIWCgltb2RlbF9rZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQgwKCl9tb2RlbF9rZXlCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpQBChpGaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRIqCgdyZWNvcmRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyLhAQoWV3JpdGVFbWJlZGRpbmdzUmVxdWVzdBIRCglyZWNvcmRfaWQYASABKAkSDgoGdmVjdG9yGAIgAygCEhIKCmRpbWVuc2lvbnMYAyABKAUSFQoIcHJvdmlkZXIYBCABKAlIAIgBARIXCgptb2RlbF9uYW1lGAUgASgJSAGIAQESEAoDa2V5GAYgASgJSAKIAQESGQoMY29udGVudF9oYXNoGAcgASgJSAOIAQFCCwoJX3Byb3ZpZGVyQg0KC19tb2RlbF9uYW1lQgYKBF9rZXlCDwoNX2NvbnRlbnRfaGFzaCIqChdXcml0ZUVtYmVkZGluZ3NSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIiwKF0RlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCSIrChhEZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJnCh9FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0EhEKCXJlY29yZF9pZBgBIAEoCRIRCgltb2RlbF9rZXkYAiABKAkSEwoGc291cmNlGAMgASgJSACIAQFCCQoHX3NvdXJjZSI0CiBFbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZRIQCghlbnF1ZXVlZBgBIAEoCCLNAQoXU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QSFAoMcXVlcnlfdmVjdG9yGAEgAygCEhYKCW1vZGVsX2tleRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDAoKX21vZGVsX2tleUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikgEKGFNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRIqCgdyZXN1bHRzGAEgAygLMhkucmVjb3Jkcy52MS5TaW1pbGFyUmVjb3JkEisKCXBhZ2VfaW5mbxgCIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYAyADKAlCDAoKX3BhZ2VfaW5mbyKJAQoeUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRIQCgNrZXkYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQFCBgoEX2tleUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IlUKFk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSEQoJcmVjb3JkX2lkGAEgASgJEhgKC25hdHVyYWxfa2V5GAIgASgJSACIAQFCDgoMX25hdHVyYWxfa2V5IrEBCh9SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEjMKB3JlY29yZHMYASADKAsyIi5yZWNvcmRzLnYxLk1pc3NpbmdFbWJlZGRpbmdSZWNvcmQSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCRINCgV0b3RhbBgEIAEoBUIMCgpfcGFnZV9pbmZvIm0KF0VtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0EhIKCnJlY29yZF9pZHMYASADKAkSEAoDa2V5GAIgASgJSACIAQESFgoJbW9kZWxfa2V5GAMgASgJSAGIAQFCBgoEX2tleUIMCgpfbW9kZWxfa2V5IlAKD0VtYmVkZGluZ0RpZ2VzdBIRCglyZWNvcmRfaWQYASABKAkSGQoMY29udGVudF9oYXNoGAIgASgJSACIAQFCDwoNX2NvbnRlbnRfaGFzaCJIChhFbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USLAoHZGlnZXN0cxgBIAMoCzIbLnJlY29yZHMudjEuRW1iZWRkaW5nRGlnZXN0Ip8CChNMb29rdXBSZWNvcmRSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIYCgtjdXN0b21lcl9pZBgHIAEoCUgCiAEBEjYKEGN1c3RvbWVyX2NvbnRleHQYCCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZUIOCgxfY3VzdG9tZXJfaWRCEwoRX2N1c3RvbWVyX2NvbnRleHQiPAoUTG9va3VwUmVjb3JkUmVzcG9uc2USFgoJcmVjb3JkX2lkGAEgASgJSACIAQFCDAoKX3JlY29yZF9pZCLpAQoeQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0EhEKCW1vZGVsX2tleRgBIAEoCRITCgtsb29rdXBfbmFtZRgCIAEoCRIQCghrZXlfaGFzaBgDIAEoDBIPCgdjaGFubmVsGAQgASgJEhcKCnZhcmlhbnRfaWQYBSABKAlIAIgBARITCgZsb2NhbGUYBiABKAlIAYgBARIeChFleGNsdWRlX3JlY29yZF9pZBgHIAEoCUgCiAEBQg0KC192YXJpYW50X2lkQgkKB19sb2NhbGVCFAoSX2V4Y2x1ZGVfcmVjb3JkX2lkIjQKH0NoZWNrTG9va3VwQXZhaWxhYmlsaXR5UmVzcG9uc2USEQoJYXZhaWxhYmxlGAEgASgIIpcBChRMb29rdXBDb25mbGljdERldGFpbBIRCgltb2RlbF9rZXkYASABKAkSEwoLbG9va3VwX25hbWUYAiABKAkSDwoHY2hhbm5lbBgDIAEoCRIXCgp2YXJpYW50X2lkGAQgASgJSACIAQESEwoGbG9jYWxlGAUgASgJSAGIAQFCDQoLX3ZhcmlhbnRfaWRCCQoHX2xvY2FsZSLiAQoaTGlzdExvb2t1cENvbmZsaWN0c1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJEhgKC2xvb2t1cF9uYW1lGAIgASgJSACIAQESDwoHY2hhbm5lbBgDIAEoCRISCgVmaXJzdBgEIAEoBUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQESEQoEbGFzdBgGIAEoBUgDiAEBEhMKBmJlZm9yZRgHIAEoCUgEiAEBQg4KDF9sb29rdXBfbmFtZUIICgZfZmlyc3RCCAoGX2FmdGVyQgcKBV9sYXN0QgkKB19iZWZvcmUiowEKG0xpc3RMb29rdXBDb25mbGljdHNSZXNwb25zZRIpCgZncm91cHMYASADKAsyGS5yZWNvcmRzLnYxLkNvbmZsaWN0R3JvdXASDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpsBCg1Db25mbGljdEdyb3VwEhMKC2VuY29kZWRfa2V5GAEgASgJEg8KB2NoYW5uZWwYAiABKAkSFwoKdmFyaWFudF9pZBgDIAEoCUgAiAEBEhgKC2N1c3RvbWVyX2lkGAQgASgJSAGIAQESEgoKcmVjb3JkX2lkcxgFIAMoCUINCgtfdmFyaWFudF9pZEIOCgxfY3VzdG9tZXJfaWQiLwoaUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIjUKG1JlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRIWCg5yZWNvcmRzX3dhbGtlZBgBIAEoBSKNAQoiTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhkKDHJlc291cmNlX2tleRgCIAEoCUgAiAEBEhYKCXJvd19saW1pdBgDIAEoBUgBiAEBQg8KDV9yZXNvdXJjZV9rZXlCDAoKX3Jvd19saW1pdCJZCiNMaXN0U2xvd1F1ZXJ5QWR2aXNvckVudHJpZXNSZXNwb25zZRIyCgdlbnRyaWVzGAEgAygLMiEucmVjb3Jkcy52MS5TbG93UXVlcnlBZHZpc29yRW50cnkiqwEKFVNsb3dRdWVyeUFkdmlzb3JFbnRyeRIVCg1yZXNvdXJjZV90eXBlGAEgASgJEhQKDHJlc291cmNlX2tleRgCIAEoCRISCgpmaWVsZF9wYXRoGAMgASgJEhAKCG9wZXJhdG9yGAQgASgJEg0KBWNvdW50GAUgASgDEjAKDGxhc3Rfc2Vlbl9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiNwoeU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkiYQofU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRI+CglyZXNvdXJjZXMYASADKAsyKy5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JSZXNvdXJjZVN1bW1hcnkiYAofU2xvd1F1ZXJ5QWR2aXNvclJlc291cmNlU3VtbWFyeRIUCgxyZXNvdXJjZV9rZXkYASABKAkSEwoLZW50cnlfY291bnQYAiABKAUSEgoKdG90YWxfaGl0cxgDIAEoAyKMAQohQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0EhUKDXJlc291cmNlX3R5cGUYASABKAkSGQoMcmVzb3VyY2Vfa2V5GAIgASgJSACIAQESEgoKZmllbGRfcGF0aBgDIAEoCRIQCghvcGVyYXRvchgEIAEoCUIPCg1fcmVzb3VyY2Vfa2V5IiQKIkNsZWFyU2xvd1F1ZXJ5QWR2aXNvckVudHJ5UmVzcG9uc2UqcwoKUmVjb3JkVHlwZRIbChdSRUNPUkRfVFlQRV9VTlNQRUNJRklFRBAAEhYKElJFQ09SRF9UWVBFX1JFQ09SRBABEhcKE1JFQ09SRF9UWVBFX1ZBUklBTlQQAhIXChNSRUNPUkRfVFlQRV9WRVJTSU9OEAMqnQEKEkJhdGNoT3BlcmF0aW9uVHlwZRIkCiBCQVRDSF9PUEVSQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0NSRUFURRABEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX1VQREFURRACEh8KG0JBVENIX09QRVJBVElPTl9UWVBFX0RFTEVURRADMpImCg5SZWNvcmRzU2VydmljZRJRCgxDcmVhdGVSZWNvcmQSHy5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlcXVlc3QaIC5yZWNvcmRzLnYxLkNyZWF0ZVJlY29yZFJlc3BvbnNlEkgKCUdldFJlY29yZBIcLnJlY29yZHMudjEuR2V0UmVjb3JkUmVxdWVzdBodLnJlY29yZHMudjEuR2V0UmVjb3JkUmVzcG9uc2USVwoOR2V0UmVjb3JkQnlLZXkSIS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5UmVxdWVzdBoiLnJlY29yZHMudjEuR2V0UmVjb3JkQnlLZXlSZXNwb25zZRJjChJHZXRSZWNvcmRCeUtleU9ySWQSJS5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlcXVlc3QaJi5yZWNvcmRzLnYxLkdldFJlY29yZEJ5S2V5T3JJZFJlc3BvbnNlEk4KC0xpc3RSZWNvcmRzEh4ucmVjb3Jkcy52MS5MaXN0UmVjb3Jkc1JlcXVlc3QaHy5yZWNvcmRzLnYxLkxpc3RSZWNvcmRzUmVzcG9uc2USUQoMVXBkYXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5VcGRhdGVSZWNvcmRSZXNwb25zZRJXCg5BdXRvU2F2ZVJlY29yZBIhLnJlY29yZHMudjEuQXV0b1NhdmVSZWNvcmRSZXF1ZXN0GiIucmVjb3Jkcy52MS5BdXRvU2F2ZVJlY29yZFJlc3BvbnNlElEKDFVwc2VydFJlY29yZBIfLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVxdWVzdBogLnJlY29yZHMudjEuVXBzZXJ0UmVjb3JkUmVzcG9uc2USUQoMRGVsZXRlUmVjb3JkEh8ucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5EZWxldGVSZWNvcmRSZXNwb25zZRJsChVCYXRjaFJlY29yZE9wZXJhdGlvbnMSKC5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1JlcXVlc3QaKS5yZWNvcmRzLnYxLkJhdGNoUmVjb3JkT3BlcmF0aW9uc1Jlc3BvbnNlEmAKEUJ1bGtVcGRhdGVSZWNvcmRzEiQucmVjb3Jkcy52MS5CdWxrVXBkYXRlUmVjb3Jkc1JlcXVlc3QaJS5yZWNvcmRzLnYxLkJ1bGtVcGRhdGVSZWNvcmRzUmVzcG9uc2USbwoWQmFja2ZpbGxRdWVyeWFibGVJbmRleBIpLnJlY29yZHMudjEuQmFja2ZpbGxRdWVyeWFibGVJbmRleFJlcXVlc3QaKi5yZWNvcmRzLnYxLkJhY2tmaWxsUXVlcnlhYmxlSW5kZXhSZXNwb25zZRJpChRCYWNrZmlsbE1vZGVsSW5kZXhlcxInLnJlY29yZHMudjEuQmFja2ZpbGxNb2RlbEluZGV4ZXNSZXF1ZXN0GigucmVjb3Jkcy52MS5CYWNrZmlsbE1vZGVsSW5kZXhlc1Jlc3BvbnNlEn4KG0xpc3RTbG93UXVlcnlBZHZpc29yRW50cmllcxIuLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVxdWVzdBovLnJlY29yZHMudjEuTGlzdFNsb3dRdWVyeUFkdmlzb3JFbnRyaWVzUmVzcG9uc2UScgoXU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnkSKi5yZWNvcmRzLnYxLlNsb3dRdWVyeUFkdmlzb3JTdW1tYXJ5UmVxdWVzdBorLnJlY29yZHMudjEuU2xvd1F1ZXJ5QWR2aXNvclN1bW1hcnlSZXNwb25zZRJ7ChpDbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeRItLnJlY29yZHMudjEuQ2xlYXJTbG93UXVlcnlBZHZpc29yRW50cnlSZXF1ZXN0Gi4ucmVjb3Jkcy52MS5DbGVhclNsb3dRdWVyeUFkdmlzb3JFbnRyeVJlc3BvbnNlEloKD0R1cGxpY2F0ZVJlY29yZBIiLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3JkUmVzcG9uc2USaQoURHVwbGljYXRlUmVjb3Jkc0J1bGsSJy5yZWNvcmRzLnYxLkR1cGxpY2F0ZVJlY29yZHNCdWxrUmVxdWVzdBooLnJlY29yZHMudjEuRHVwbGljYXRlUmVjb3Jkc0J1bGtSZXNwb25zZRJXCg5QdWJsaXNoVmVyc2lvbhIhLnJlY29yZHMudjEuUHVibGlzaFZlcnNpb25SZXF1ZXN0GiIucmVjb3Jkcy52MS5QdWJsaXNoVmVyc2lvblJlc3BvbnNlEloKD1VucHVibGlzaFJlY29yZBIiLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVxdWVzdBojLnJlY29yZHMudjEuVW5wdWJsaXNoUmVjb3JkUmVzcG9uc2USWgoPUmV2ZXJ0VG9WZXJzaW9uEiIucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXF1ZXN0GiMucmVjb3Jkcy52MS5SZXZlcnRUb1ZlcnNpb25SZXNwb25zZRJjChJMaXN0UmVjb3JkVmVyc2lvbnMSJS5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxpc3RSZWNvcmRWZXJzaW9uc1Jlc3BvbnNlElQKDUNyZWF0ZVZhcmlhbnQSIC5yZWNvcmRzLnYxLkNyZWF0ZVZhcmlhbnRSZXF1ZXN0GiEucmVjb3Jkcy52MS5DcmVhdGVWYXJpYW50UmVzcG9uc2USVAoNVXBkYXRlVmFyaWFudBIgLnJlY29yZHMudjEuVXBkYXRlVmFyaWFudFJlcXVlc3QaIS5yZWNvcmRzLnYxLlVwZGF0ZVZhcmlhbnRSZXNwb25zZRJUCg1EZWxldGVWYXJpYW50EiAucmVjb3Jkcy52MS5EZWxldGVWYXJpYW50UmVxdWVzdBohLnJlY29yZHMudjEuRGVsZXRlVmFyaWFudFJlc3BvbnNlEmAKEVNldERlZmF1bHRWYXJpYW50EiQucmVjb3Jkcy52MS5TZXREZWZhdWx0VmFyaWFudFJlcXVlc3QaJS5yZWNvcmRzLnYxLlNldERlZmF1bHRWYXJpYW50UmVzcG9uc2USYwoSTGlzdFJlY29yZFZhcmlhbnRzEiUucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5MaXN0UmVjb3JkVmFyaWFudHNSZXNwb25zZRJsChVTY2hlZHVsZVJlY29yZFB1Ymxpc2gSKC5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlcXVlc3QaKS5yZWNvcmRzLnYxLlNjaGVkdWxlUmVjb3JkUHVibGlzaFJlc3BvbnNlEoEBChxDYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoEi8ucmVjb3Jkcy52MS5DYW5jZWxTY2hlZHVsZWRSZWNvcmRQdWJsaXNoUmVxdWVzdBowLnJlY29yZHMudjEuQ2FuY2VsU2NoZWR1bGVkUmVjb3JkUHVibGlzaFJlc3BvbnNlEm8KFkxpc3RTY2hlZHVsZWRQdWJsaXNoZXMSKS5yZWNvcmRzLnYxLkxpc3RTY2hlZHVsZWRQdWJsaXNoZXNSZXF1ZXN0GioucmVjb3Jkcy52MS5MaXN0U2NoZWR1bGVkUHVibGlzaGVzUmVzcG9uc2USZgoTR2V0U2NoZWR1bGVkUHVibGlzaBImLnJlY29yZHMudjEuR2V0U2NoZWR1bGVkUHVibGlzaFJlcXVlc3QaJy5yZWNvcmRzLnYxLkdldFNjaGVkdWxlZFB1Ymxpc2hSZXNwb25zZRJgChFMaXN0RHJhZnRWZXJzaW9ucxIkLnJlY29yZHMudjEuTGlzdERyYWZ0VmVyc2lvbnNSZXF1ZXN0GiUucmVjb3Jkcy52MS5MaXN0RHJhZnRWZXJzaW9uc1Jlc3BvbnNlEmkKFEJhdGNoUHVibGlzaFZlcnNpb25zEicucmVjb3Jkcy52MS5CYXRjaFB1Ymxpc2hWZXJzaW9uc1JlcXVlc3QaKC5yZWNvcmRzLnYxLkJhdGNoUHVibGlzaFZlcnNpb25zUmVzcG9uc2USZgoTQmF0Y2hSZXNvbHZlUmVjb3JkcxImLnJlY29yZHMudjEuQmF0Y2hSZXNvbHZlUmVjb3Jkc1JlcXVlc3QaJy5yZWNvcmRzLnYxLkJhdGNoUmVzb2x2ZVJlY29yZHNSZXNwb25zZRJjChJMb29rdXBSZWNvcmRNb2RlbHMSJS5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1JlcXVlc3QaJi5yZWNvcmRzLnYxLkxvb2t1cFJlY29yZE1vZGVsc1Jlc3BvbnNlElEKDEdsb2JhbFNlYXJjaBIfLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVxdWVzdBogLnJlY29yZHMudjEuR2xvYmFsU2VhcmNoUmVzcG9uc2USUQoMTG9va3VwUmVjb3JkEh8ucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRSZXF1ZXN0GiAucmVjb3Jkcy52MS5Mb29rdXBSZWNvcmRSZXNwb25zZRJyChdDaGVja0xvb2t1cEF2YWlsYWJpbGl0eRIqLnJlY29yZHMudjEuQ2hlY2tMb29rdXBBdmFpbGFiaWxpdHlSZXF1ZXN0GisucmVjb3Jkcy52MS5DaGVja0xvb2t1cEF2YWlsYWJpbGl0eVJlc3BvbnNlEmYKE0xpc3RMb29rdXBDb25mbGljdHMSJi5yZWNvcmRzLnYxLkxpc3RMb29rdXBDb25mbGljdHNSZXF1ZXN0GicucmVjb3Jkcy52MS5MaXN0TG9va3VwQ29uZmxpY3RzUmVzcG9uc2USZgoTUmVidWlsZE1vZGVsTG9va3VwcxImLnJlY29yZHMudjEuUmVidWlsZE1vZGVsTG9va3Vwc1JlcXVlc3QaJy5yZWNvcmRzLnYxLlJlYnVpbGRNb2RlbExvb2t1cHNSZXNwb25zZRJgChFHZXRFbWJlZGRpbmdTdGF0cxIkLnJlY29yZHMudjEuR2V0RW1iZWRkaW5nU3RhdHNSZXF1ZXN0GiUucmVjb3Jkcy52MS5HZXRFbWJlZGRpbmdTdGF0c1Jlc3BvbnNlEmYKE0dldFJlY29yZEVtYmVkZGluZ3MSJi5yZWNvcmRzLnYxLkdldFJlY29yZEVtYmVkZGluZ3NSZXF1ZXN0GicucmVjb3Jkcy52MS5HZXRSZWNvcmRFbWJlZGRpbmdzUmVzcG9uc2USYwoSRmluZFNpbWlsYXJSZWNvcmRzEiUucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXF1ZXN0GiYucmVjb3Jkcy52MS5GaW5kU2ltaWxhclJlY29yZHNSZXNwb25zZRJaCg9Xcml0ZUVtYmVkZGluZ3MSIi5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1JlcXVlc3QaIy5yZWNvcmRzLnYxLldyaXRlRW1iZWRkaW5nc1Jlc3BvbnNlEl0KEERlbGV0ZUVtYmVkZGluZ3MSIy5yZWNvcmRzLnYxLkRlbGV0ZUVtYmVkZGluZ3NSZXF1ZXN0GiQucmVjb3Jkcy52MS5EZWxldGVFbWJlZGRpbmdzUmVzcG9uc2USXQoQU2VhcmNoRW1iZWRkaW5ncxIjLnJlY29yZHMudjEuU2VhcmNoRW1iZWRkaW5nc1JlcXVlc3QaJC5yZWNvcmRzLnYxLlNlYXJjaEVtYmVkZGluZ3NSZXNwb25zZRJyChdSZWNvcmRzTWlzc2luZ0VtYmVkZGluZxIqLnJlY29yZHMudjEuUmVjb3Jkc01pc3NpbmdFbWJlZGRpbmdSZXF1ZXN0GisucmVjb3Jkcy52MS5SZWNvcmRzTWlzc2luZ0VtYmVkZGluZ1Jlc3BvbnNlEl0KEEVtYmVkZGluZ0RpZ2VzdHMSIy5yZWNvcmRzLnYxLkVtYmVkZGluZ0RpZ2VzdHNSZXF1ZXN0GiQucmVjb3Jkcy52MS5FbWJlZGRpbmdEaWdlc3RzUmVzcG9uc2USdQoYRW5xdWV1ZUdlbmVyYXRlRW1iZWRkaW5nEisucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXF1ZXN0GiwucmVjb3Jkcy52MS5FbnF1ZXVlR2VuZXJhdGVFbWJlZGRpbmdSZXNwb25zZUI7WjlnaXRodWIuY29tL2VpZGVzdHVkaW8vZm9pci9nZW4vcHJvdG8vcmVjb3Jkcy92MTtyZWNvcmRzdjFiBnByb3RvMw", [file_google_protobuf_struct3, file_google_protobuf_timestamp4, file_common_v1_pagination, file_expressions_v1_expressions]);
636
659
  var RecordSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 0);
660
+ var SortFieldSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 2);
637
661
  var BatchOperationSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 3);
638
662
  var CreateRecordRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 5);
639
663
  var GetRecordRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 7);
@@ -669,6 +693,11 @@ var FindSimilarRecordsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_
669
693
  var WriteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 83);
670
694
  var DeleteEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 85);
671
695
  var SearchEmbeddingsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 89);
696
+ var CheckLookupAvailabilityRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 99);
697
+ var ListLookupConflictsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 102);
698
+ var RebuildModelLookupsRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 105);
699
+ var ListSlowQueryAdvisorEntriesRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 107);
700
+ var ClearSlowQueryAdvisorEntryRequestSchema = /* @__PURE__ */ messageDesc7(file_records_v1_records, 113);
672
701
  var RecordsService = /* @__PURE__ */ serviceDesc3(file_records_v1_records, 0);
673
702
 
674
703
  // ../../packages/proto-ts/src/realtime/v1/realtime_pb.js
@@ -682,18 +711,18 @@ var RealtimeService = /* @__PURE__ */ serviceDesc4(file_realtime_v1_realtime, 0)
682
711
  // ../../packages/proto-ts/src/configs/v1/configs_pb.js
683
712
  import { enumDesc as enumDesc6, fileDesc as fileDesc9, messageDesc as messageDesc9, serviceDesc as serviceDesc5, tsEnum as tsEnum6 } from "@bufbuild/protobuf/codegenv2";
684
713
  import { file_google_protobuf_struct as file_google_protobuf_struct4, file_google_protobuf_timestamp as file_google_protobuf_timestamp5 } from "@bufbuild/protobuf/wkt";
685
- var file_configs_v1_configs = /* @__PURE__ */ fileDesc9("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLKAgoJT3BlcmF0aW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEhgKC2Rlc2NyaXB0aW9uGAQgASgJSACIAQESEQoEaWNvbhgFIAEoCUgBiAEBEhUKCGNhdGVnb3J5GAYgASgJSAKIAQESEQoJaXNfYWN0aXZlGAcgASgIEhEKCXRlbmFudF9pZBgUIAEoCRIXCgpwcm9qZWN0X2lkGBUgASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX2Rlc2NyaXB0aW9uQgcKBV9pY29uQgsKCV9jYXRlZ29yeUINCgtfcHJvamVjdF9pZCLGAQoVTGlzdE9wZXJhdGlvbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKeAQoWTGlzdE9wZXJhdGlvbnNSZXNwb25zZRIpCgpvcGVyYXRpb25zGAEgAygLMhUuY29uZmlncy52MS5PcGVyYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIh4KEEdldENvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiNwoRR2V0Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWciJAoVR2V0Q29uZmlnQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSI8ChZHZXRDb25maWdCeUtleVJlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIsMBChJMaXN0Q29uZmlnc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IpUBChNMaXN0Q29uZmlnc1Jlc3BvbnNlEiMKB2NvbmZpZ3MYASADKAsyEi5jb25maWdzLnYxLkNvbmZpZxINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8i7AEKEkNvbmZpZ0hpc3RvcnlFbnRyeRIKCgJpZBgBIAEoCRIWCgljb25maWdfaWQYAiABKAlIAIgBARISCgpjb25maWdfa2V5GAMgASgJEi0KCXB1c2hlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEQoJcHVzaGVkX2J5GAUgASgJEg4KBnNvdXJjZRgGIAEoCRIKCgJvaxgHIAEoCBIWCg5yZXN1bHRfc3VtbWFyeRgIIAEoCRIaChJkaWZmX2Zyb21fcHJldmlvdXMYCSABKAlCDAoKX2NvbmZpZ19pZCJpChhMaXN0Q29uZmlnSGlzdG9yeVJlcXVlc3QSEQoJY29uZmlnX2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEgoFZmlyc3QYAyABKAVIAYgBAUIICgZfYWZ0ZXJCCAoGX2ZpcnN0IocBChlMaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlEi8KB2VudHJpZXMYASADKAsyHi5jb25maWdzLnYxLkNvbmZpZ0hpc3RvcnlFbnRyeRIrCglwYWdlX2luZm8YAiABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBAUIMCgpfcGFnZV9pbmZvIvoBChNDcmVhdGVDb25maWdSZXF1ZXN0EgsKA2tleRgBIAEoCRITCgtjb25maWdfdHlwZRgCIAEoCRIuCglkaXJlY3Rpb24YAyABKA4yGy5jb25maWdzLnYxLkNvbmZpZ0RpcmVjdGlvbhIMCgRuYW1lGAQgASgJEhgKC2Rlc2NyaXB0aW9uGAUgASgJSACIAQESLAoGY29uZmlnGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhQKB2VuYWJsZWQYByABKAhIAogBAUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZCI6ChRDcmVhdGVDb25maWdSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyK2AgoTVXBkYXRlQ29uZmlnUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIsCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAKIAQESFAoHZW5hYmxlZBgFIAEoCEgDiAEBEi4KCHdlYmhvb2tzGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWhvb2tzGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkIJCgdfY29uZmlnQgoKCF9lbmFibGVkQgsKCV93ZWJob29rc0IICgZfaG9va3MiOgoUVXBkYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWciIQoTRGVsZXRlQ29uZmlnUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVDb25maWdSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIsACChVFZGl0b3JDb25maWdQbGFjZW1lbnQSEQoJY29uZmlnX2lkGAEgASgJEhIKCmNvbmZpZ19rZXkYAiABKAkSEAoDdXJsGAMgASgJSACIAQESGwoOYWxsb3dlZF9vcmlnaW4YBCABKAlIAYgBARITCgZoZWlnaHQYBSABKAVIAogBARISCgVsYWJlbBgGIAEoCUgDiAEBEhQKB2FwaV9rZXkYByABKAlIBIgBARIUCgdhcGlfdXJsGAggASgJSAWIAQESHgoRY29ubmVjdGlvbl9kb21haW4YCSABKAlIBogBAUIGCgRfdXJsQhEKD19hbGxvd2VkX29yaWdpbkIJCgdfaGVpZ2h0QggKBl9sYWJlbEIKCghfYXBpX2tleUIKCghfYXBpX3VybEIUChJfY29ubmVjdGlvbl9kb21haW4iLAoXR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIlEKGEdldEVkaXRvckNvbmZpZ3NSZXNwb25zZRI1CgpwbGFjZW1lbnRzGAEgAygLMiEuY29uZmlncy52MS5FZGl0b3JDb25maWdQbGFjZW1lbnQiLQoYVHJpZ2dlckNvbmZpZ1N5bmNSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCSIsChlUcmlnZ2VyQ29uZmlnU3luY1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiVgoSQXBwbHlDb25maWdSZXF1ZXN0EhIKCmNvbmZpZ19rZXkYASABKAkSLAoLY29uZmlnX2RhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0ItcBChNBcHBseUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnEi8KB3N1bW1hcnkYAiABKAsyHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnU3VtbWFyeRI7ChRwcm92aXNpb25lZF9hcGlfa2V5cxgDIAMoCzIdLmNvbmZpZ3MudjEuUHJvdmlzaW9uZWRBcGlLZXkSGwoOd2ViaG9va19zZWNyZXQYBCABKAlIAIgBAUIRCg9fd2ViaG9va19zZWNyZXQiVQoRUHJvdmlzaW9uZWRBcGlLZXkSDAoEbmFtZRgBIAEoCRIQCghrZXlfdHlwZRgCIAEoCRIPCgdlbnZfdmFyGAMgASgJEg8KB3Jhd19rZXkYBCABKAki7wIKEkFwcGx5Q29uZmlnU3VtbWFyeRIWCg5tb2RlbHNfY3JlYXRlZBgBIAEoBRIWCg5tb2RlbHNfdXBkYXRlZBgCIAEoBRIaChJvcGVyYXRpb25zX2NyZWF0ZWQYAyABKAUSGgoSb3BlcmF0aW9uc191cGRhdGVkGAQgASgFEhUKDWhvb2tzX2NyZWF0ZWQYBSABKAUSFQoNaG9va3NfdXBkYXRlZBgGIAEoBRIYChBzZWdtZW50c19jcmVhdGVkGAcgASgFEhgKEHNlZ21lbnRzX3VwZGF0ZWQYCCABKAUSGQoRc2NoZWR1bGVzX2NyZWF0ZWQYCSABKAUSGQoRc2NoZWR1bGVzX3VwZGF0ZWQYCiABKAUSHgoWYXV0aF9wcm92aWRlcnNfY3JlYXRlZBgLIAEoBRIeChZhdXRoX3Byb3ZpZGVyc191cGRhdGVkGAwgASgFEhkKEXJlc291cmNlc19kZWxldGVkGA0gASgFIkEKHFdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDCJvCh1Xcml0ZUNvbmZpZ0NyZWRlbnRpYWxSZXNwb25zZRIZChFlbmNyeXB0aW9uX2tleV9pZBgBIAEoCRIzCg9sYXN0X3dyaXR0ZW5fYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wKo4BCg9Db25maWdEaXJlY3Rpb24SIAocQ09ORklHX0RJUkVDVElPTl9VTlNQRUNJRklFRBAAEhkKFUNPTkZJR19ESVJFQ1RJT05fUkVBRBABEhoKFkNPTkZJR19ESVJFQ1RJT05fV1JJVEUQAhIiCh5DT05GSUdfRElSRUNUSU9OX0JJRElSRUNUSU9OQUwQAzK2CAoOQ29uZmlnc1NlcnZpY2USSAoJR2V0Q29uZmlnEhwuY29uZmlncy52MS5HZXRDb25maWdSZXF1ZXN0Gh0uY29uZmlncy52MS5HZXRDb25maWdSZXNwb25zZRJXCg5HZXRDb25maWdCeUtleRIhLmNvbmZpZ3MudjEuR2V0Q29uZmlnQnlLZXlSZXF1ZXN0GiIuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlc3BvbnNlEk4KC0xpc3RDb25maWdzEh4uY29uZmlncy52MS5MaXN0Q29uZmlnc1JlcXVlc3QaHy5jb25maWdzLnYxLkxpc3RDb25maWdzUmVzcG9uc2USYAoRTGlzdENvbmZpZ0hpc3RvcnkSJC5jb25maWdzLnYxLkxpc3RDb25maWdIaXN0b3J5UmVxdWVzdBolLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRJXCg5MaXN0T3BlcmF0aW9ucxIhLmNvbmZpZ3MudjEuTGlzdE9wZXJhdGlvbnNSZXF1ZXN0GiIuY29uZmlncy52MS5MaXN0T3BlcmF0aW9uc1Jlc3BvbnNlEl0KEEdldEVkaXRvckNvbmZpZ3MSIy5jb25maWdzLnYxLkdldEVkaXRvckNvbmZpZ3NSZXF1ZXN0GiQuY29uZmlncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USUQoMQ3JlYXRlQ29uZmlnEh8uY29uZmlncy52MS5DcmVhdGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5DcmVhdGVDb25maWdSZXNwb25zZRJRCgxVcGRhdGVDb25maWcSHy5jb25maWdzLnYxLlVwZGF0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLlVwZGF0ZUNvbmZpZ1Jlc3BvbnNlElEKDERlbGV0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuRGVsZXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuRGVsZXRlQ29uZmlnUmVzcG9uc2USYAoRVHJpZ2dlckNvbmZpZ1N5bmMSJC5jb25maWdzLnYxLlRyaWdnZXJDb25maWdTeW5jUmVxdWVzdBolLmNvbmZpZ3MudjEuVHJpZ2dlckNvbmZpZ1N5bmNSZXNwb25zZRJOCgtBcHBseUNvbmZpZxIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXF1ZXN0Gh8uY29uZmlncy52MS5BcHBseUNvbmZpZ1Jlc3BvbnNlEmwKFVdyaXRlQ29uZmlnQ3JlZGVudGlhbBIoLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBopLmNvbmZpZ3MudjEuV3JpdGVDb25maWdDcmVkZW50aWFsUmVzcG9uc2VCO1o5Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL2NvbmZpZ3MvdjE7Y29uZmlnc3YxYgZwcm90bzM", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
714
+ var file_configs_v1_configs = /* @__PURE__ */ fileDesc9("Chhjb25maWdzL3YxL2NvbmZpZ3MucHJvdG8SCmNvbmZpZ3MudjEivwcKBkNvbmZpZxIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSEwoLY29uZmlnX3R5cGUYAyABKAkSLgoJZGlyZWN0aW9uGAQgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgFIAEoCRIYCgtkZXNjcmlwdGlvbhgGIAEoCUgAiAEBEh4KEWNvbm5lY3Rpb25fZG9tYWluGAogASgJSAGIAQESGgoNY29ubmVjdGlvbl9pZBgLIAEoCUgCiAEBEg8KB2VuYWJsZWQYFCABKAgSEwoLZW52aXJvbm1lbnQYFSABKAkSEwoLc3luY19zdGF0dXMYFiABKAkSMwoNc3luY19tZXRhZGF0YRgXIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIxCgtjcmVkZW50aWFscxgeIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVvYXV0aBgfIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIuCghmZWF0dXJlcxggIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgh3ZWJob29rcxghIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIB4gBARIsCgZjb25maWcYIiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAiIAQESKwoFaG9va3MYIyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAmIAQESEQoJdGVuYW50X2lkGCggASgJEhIKCnByb2plY3RfaWQYKSABKAkSFwoKY3JlYXRlZF9ieRgtIAEoCUgKiAEBEhcKCnVwZGF0ZWRfYnkYLiABKAlIC4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIOCgxfZGVzY3JpcHRpb25CFAoSX2Nvbm5lY3Rpb25fZG9tYWluQhAKDl9jb25uZWN0aW9uX2lkQhAKDl9zeW5jX21ldGFkYXRhQg4KDF9jcmVkZW50aWFsc0IICgZfb2F1dGhCCwoJX2ZlYXR1cmVzQgsKCV93ZWJob29rc0IJCgdfY29uZmlnQggKBl9ob29rc0INCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSIeChBHZXRDb25maWdSZXF1ZXN0EgoKAmlkGAEgASgJIjcKEUdldENvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiQKFUdldENvbmZpZ0J5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiPAoWR2V0Q29uZmlnQnlLZXlSZXNwb25zZRIiCgZjb25maWcYASABKAsyEi5jb25maWdzLnYxLkNvbmZpZyLDAQoSTGlzdENvbmZpZ3NSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKVAQoTTGlzdENvbmZpZ3NSZXNwb25zZRIjCgdjb25maWdzGAEgAygLMhIuY29uZmlncy52MS5Db25maWcSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIuwBChJDb25maWdIaXN0b3J5RW50cnkSCgoCaWQYASABKAkSFgoJY29uZmlnX2lkGAIgASgJSACIAQESEgoKY29uZmlnX2tleRgDIAEoCRItCglwdXNoZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhEKCXB1c2hlZF9ieRgFIAEoCRIOCgZzb3VyY2UYBiABKAkSCgoCb2sYByABKAgSFgoOcmVzdWx0X3N1bW1hcnkYCCABKAkSGgoSZGlmZl9mcm9tX3ByZXZpb3VzGAkgASgJQgwKCl9jb25maWdfaWQiaQoYTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0EhEKCWNvbmZpZ19pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhIKBWZpcnN0GAMgASgFSAGIAQFCCAoGX2FmdGVyQggKBl9maXJzdCKHAQoZTGlzdENvbmZpZ0hpc3RvcnlSZXNwb25zZRIvCgdlbnRyaWVzGAEgAygLMh4uY29uZmlncy52MS5Db25maWdIaXN0b3J5RW50cnkSKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQFCDAoKX3BhZ2VfaW5mbyL6AQoTQ3JlYXRlQ29uZmlnUmVxdWVzdBILCgNrZXkYASABKAkSEwoLY29uZmlnX3R5cGUYAiABKAkSLgoJZGlyZWN0aW9uGAMgASgOMhsuY29uZmlncy52MS5Db25maWdEaXJlY3Rpb24SDAoEbmFtZRgEIAEoCRIYCgtkZXNjcmlwdGlvbhgFIAEoCUgAiAEBEiwKBmNvbmZpZxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIUCgdlbmFibGVkGAcgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgkKB19jb25maWdCCgoIX2VuYWJsZWQiOgoUQ3JlYXRlQ29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcitgIKE1VwZGF0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESLAoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgCiAEBEhQKB2VuYWJsZWQYBSABKAhIA4gBARIuCgh3ZWJob29rcxgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIrCgVob29rcxgHIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CCQoHX2NvbmZpZ0IKCghfZW5hYmxlZEILCglfd2ViaG9va3NCCAoGX2hvb2tzIjoKFFVwZGF0ZUNvbmZpZ1Jlc3BvbnNlEiIKBmNvbmZpZxgBIAEoCzISLmNvbmZpZ3MudjEuQ29uZmlnIiEKE0RlbGV0ZUNvbmZpZ1JlcXVlc3QSCgoCaWQYASABKAkiJwoURGVsZXRlQ29uZmlnUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChhUcmlnZ2VyQ29uZmlnU3luY1JlcXVlc3QSEQoJY29uZmlnX2lkGAEgASgJIiwKGVRyaWdnZXJDb25maWdTeW5jUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJWChJBcHBseUNvbmZpZ1JlcXVlc3QSEgoKY29uZmlnX2tleRgBIAEoCRIsCgtjb25maWdfZGF0YRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Qi1wEKE0FwcGx5Q29uZmlnUmVzcG9uc2USIgoGY29uZmlnGAEgASgLMhIuY29uZmlncy52MS5Db25maWcSLwoHc3VtbWFyeRgCIAEoCzIeLmNvbmZpZ3MudjEuQXBwbHlDb25maWdTdW1tYXJ5EjsKFHByb3Zpc2lvbmVkX2FwaV9rZXlzGAMgAygLMh0uY29uZmlncy52MS5Qcm92aXNpb25lZEFwaUtleRIbCg53ZWJob29rX3NlY3JldBgEIAEoCUgAiAEBQhEKD193ZWJob29rX3NlY3JldCJVChFQcm92aXNpb25lZEFwaUtleRIMCgRuYW1lGAEgASgJEhAKCGtleV90eXBlGAIgASgJEg8KB2Vudl92YXIYAyABKAkSDwoHcmF3X2tleRgEIAEoCSLvAgoSQXBwbHlDb25maWdTdW1tYXJ5EhYKDm1vZGVsc19jcmVhdGVkGAEgASgFEhYKDm1vZGVsc191cGRhdGVkGAIgASgFEhoKEm9wZXJhdGlvbnNfY3JlYXRlZBgDIAEoBRIaChJvcGVyYXRpb25zX3VwZGF0ZWQYBCABKAUSFQoNaG9va3NfY3JlYXRlZBgFIAEoBRIVCg1ob29rc191cGRhdGVkGAYgASgFEhgKEHNlZ21lbnRzX2NyZWF0ZWQYByABKAUSGAoQc2VnbWVudHNfdXBkYXRlZBgIIAEoBRIZChFzY2hlZHVsZXNfY3JlYXRlZBgJIAEoBRIZChFzY2hlZHVsZXNfdXBkYXRlZBgKIAEoBRIeChZhdXRoX3Byb3ZpZGVyc19jcmVhdGVkGAsgASgFEh4KFmF1dGhfcHJvdmlkZXJzX3VwZGF0ZWQYDCABKAUSGQoRcmVzb3VyY2VzX2RlbGV0ZWQYDSABKAUiQQocV3JpdGVDb25maWdDcmVkZW50aWFsUmVxdWVzdBISCgpjb25maWdfa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMIm8KHVdyaXRlQ29uZmlnQ3JlZGVudGlhbFJlc3BvbnNlEhkKEWVuY3J5cHRpb25fa2V5X2lkGAEgASgJEjMKD2xhc3Rfd3JpdHRlbl9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAqjgEKD0NvbmZpZ0RpcmVjdGlvbhIgChxDT05GSUdfRElSRUNUSU9OX1VOU1BFQ0lGSUVEEAASGQoVQ09ORklHX0RJUkVDVElPTl9SRUFEEAESGgoWQ09ORklHX0RJUkVDVElPTl9XUklURRACEiIKHkNPTkZJR19ESVJFQ1RJT05fQklESVJFQ1RJT05BTBADMv4GCg5Db25maWdzU2VydmljZRJICglHZXRDb25maWcSHC5jb25maWdzLnYxLkdldENvbmZpZ1JlcXVlc3QaHS5jb25maWdzLnYxLkdldENvbmZpZ1Jlc3BvbnNlElcKDkdldENvbmZpZ0J5S2V5EiEuY29uZmlncy52MS5HZXRDb25maWdCeUtleVJlcXVlc3QaIi5jb25maWdzLnYxLkdldENvbmZpZ0J5S2V5UmVzcG9uc2USTgoLTGlzdENvbmZpZ3MSHi5jb25maWdzLnYxLkxpc3RDb25maWdzUmVxdWVzdBofLmNvbmZpZ3MudjEuTGlzdENvbmZpZ3NSZXNwb25zZRJgChFMaXN0Q29uZmlnSGlzdG9yeRIkLmNvbmZpZ3MudjEuTGlzdENvbmZpZ0hpc3RvcnlSZXF1ZXN0GiUuY29uZmlncy52MS5MaXN0Q29uZmlnSGlzdG9yeVJlc3BvbnNlElEKDENyZWF0ZUNvbmZpZxIfLmNvbmZpZ3MudjEuQ3JlYXRlQ29uZmlnUmVxdWVzdBogLmNvbmZpZ3MudjEuQ3JlYXRlQ29uZmlnUmVzcG9uc2USUQoMVXBkYXRlQ29uZmlnEh8uY29uZmlncy52MS5VcGRhdGVDb25maWdSZXF1ZXN0GiAuY29uZmlncy52MS5VcGRhdGVDb25maWdSZXNwb25zZRJRCgxEZWxldGVDb25maWcSHy5jb25maWdzLnYxLkRlbGV0ZUNvbmZpZ1JlcXVlc3QaIC5jb25maWdzLnYxLkRlbGV0ZUNvbmZpZ1Jlc3BvbnNlEmAKEVRyaWdnZXJDb25maWdTeW5jEiQuY29uZmlncy52MS5UcmlnZ2VyQ29uZmlnU3luY1JlcXVlc3QaJS5jb25maWdzLnYxLlRyaWdnZXJDb25maWdTeW5jUmVzcG9uc2USTgoLQXBwbHlDb25maWcSHi5jb25maWdzLnYxLkFwcGx5Q29uZmlnUmVxdWVzdBofLmNvbmZpZ3MudjEuQXBwbHlDb25maWdSZXNwb25zZRJsChVXcml0ZUNvbmZpZ0NyZWRlbnRpYWwSKC5jb25maWdzLnYxLldyaXRlQ29uZmlnQ3JlZGVudGlhbFJlcXVlc3QaKS5jb25maWdzLnYxLldyaXRlQ29uZmlnQ3JlZGVudGlhbFJlc3BvbnNlQjtaOWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9jb25maWdzL3YxO2NvbmZpZ3N2MWIGcHJvdG8z", [file_google_protobuf_struct4, file_google_protobuf_timestamp5, file_common_v1_pagination]);
686
715
  var ConfigSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 0);
687
- var ListOperationsRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 2);
688
- var GetConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 4);
689
- var GetConfigByKeyRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 6);
690
- var ListConfigsRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 8);
691
- var CreateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 13);
692
- var UpdateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 15);
693
- var DeleteConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 17);
694
- var TriggerConfigSyncRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 22);
695
- var ApplyConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 24);
696
- var WriteConfigCredentialRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 28);
716
+ var GetConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 1);
717
+ var GetConfigByKeyRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 3);
718
+ var ListConfigsRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 5);
719
+ var ListConfigHistoryRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 8);
720
+ var CreateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 10);
721
+ var UpdateConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 12);
722
+ var DeleteConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 14);
723
+ var TriggerConfigSyncRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 16);
724
+ var ApplyConfigRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 18);
725
+ var WriteConfigCredentialRequestSchema = /* @__PURE__ */ messageDesc9(file_configs_v1_configs, 22);
697
726
  var ConfigDirectionSchema = /* @__PURE__ */ enumDesc6(file_configs_v1_configs, 0);
698
727
  var ConfigDirection = /* @__PURE__ */ tsEnum6(ConfigDirectionSchema);
699
728
  var ConfigsService = /* @__PURE__ */ serviceDesc5(file_configs_v1_configs, 0);
@@ -722,7 +751,7 @@ var SegmentsService = /* @__PURE__ */ serviceDesc6(file_segments_v1_segments, 0)
722
751
  // ../../packages/proto-ts/src/settings/v1/settings_pb.js
723
752
  import { enumDesc as enumDesc7, fileDesc as fileDesc11, messageDesc as messageDesc11, serviceDesc as serviceDesc7, tsEnum as tsEnum7 } from "@bufbuild/protobuf/codegenv2";
724
753
  import { file_google_protobuf_struct as file_google_protobuf_struct6, file_google_protobuf_timestamp as file_google_protobuf_timestamp7 } from "@bufbuild/protobuf/wkt";
725
- var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCLkBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEiAKE3Byb2ZpbGVfY3VzdG9tZXJfaWQYCCABKAlIA4gBARIoCgZzdGF0dXMYCiABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1cxI0CgthY2NlcHRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIzCgpleHBpcmVzX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIBogBARIXCgpyZXZva2VkX2J5GB8gASgJSAeIAQESMwoKcmV2b2tlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkQgwKCl9tb2RlbF9rZXlCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWRCDgoMX2FjY2VwdGVkX2F0Qg0KC19leHBpcmVzX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC19yZXZva2VkX2J5Qg0KC19yZXZva2VkX2F0IlIKEkdldFNldHRpbmdzUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhAKA2tleRgCIAEoCUgBiAEBQgsKCV9jYXRlZ29yeUIGCgRfa2V5Ij0KE0dldFNldHRpbmdzUmVzcG9uc2USJgoIc2V0dGluZ3MYASADKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIksKFFVwZGF0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPgoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiUKB3NldHRpbmcYASABKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIsUBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilwEKFUxpc3RBdWRpdExvZ3NSZXNwb25zZRIjCgRsb2dzGAEgAygLMhUuc2V0dGluZ3MudjEuQXVkaXRMb2cSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBChFDcmVhdGVOb3RlUmVxdWVzdBITCgtlbnRpdHlfdHlwZRgBIAEoCRIRCgllbnRpdHlfaWQYAiABKAkSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBAUIRCg9fcGFyZW50X25vdGVfaWQiNQoSQ3JlYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIhwKDkdldE5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldE5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSLBAQoQTGlzdE5vdGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikAEKEUxpc3ROb3Rlc1Jlc3BvbnNlEiAKBW5vdGVzGAEgAygLMhEuc2V0dGluZ3MudjEuTm90ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUixgEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ilAIKEkNyZWF0ZVNoYXJlUmVxdWVzdBI1Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGUSFgoJcmVjb3JkX2lkGAIgASgJSACIAQESFAoHZmlsZV9pZBgDIAEoCUgBiAEBEhMKC2N1c3RvbWVyX2lkGAQgASgJEjAKCnBlcm1pc3Npb24YBSABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb24SIAoTcHJvZmlsZV9jdXN0b21lcl9pZBgGIAEoCUgCiAEBQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWQiOAoTQ3JlYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIh0KD0dldFNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSI1ChBHZXRTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiwgEKEUxpc3RTaGFyZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKTAQoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKgAQoSVXBkYXRlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJEjUKCnBlcm1pc3Npb24YAiABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb25IAIgBARItCgZzdGF0dXMYAyABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1c0gBiAEBQg0KC19wZXJtaXNzaW9uQgkKB19zdGF0dXMiOAoTVXBkYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiAKElJldm9rZVNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSImChNSZXZva2VTaGFyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSQWNjZXB0U2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKE0FjY2VwdFNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIhChNEZWNsaW5lU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjkKFERlY2xpbmVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiwwEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIrYBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLLAQodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIv8BCh1VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIdChBzb3VyY2VfbW9kZWxfa2V5GAQgASgJSAKIAQESHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAUgASgJSAOIAQESFAoHcHVibGlzaBgGIAEoCEgEiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QgoKCF9wdWJsaXNoIlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItEBCiBHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBIVCg1kaW1lbnNpb25fa2V5GAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisgEKIUdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRIyCgZ2YWx1ZXMYASADKAsyIi5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmFsdWUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqICChRDdXN0b21lclByb2ZpbGVGaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEdHlwZRgDIAEoCRINCgVsYWJlbBgEIAEoCRIQCghyZXF1aXJlZBgFIAEoCBIWCgloZWxwX3RleHQYBiABKAlIAIgBARIYCgtwbGFjZWhvbGRlchgHIAEoCUgBiAEBEiwKBmNvbmZpZxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARImCgZhY2Nlc3MYCSABKAsyFi5jb21tb24udjEuRmllbGRBY2Nlc3MSEQoJcXVlcnlhYmxlGAogASgIQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQgkKB19jb25maWcigQEKFUN1c3RvbWVyUHJvZmlsZUxvb2t1cBIOCgZrZXlfYnkYASADKAkSEQoEbmFtZRgCIAEoCUgAiAEBEjwKCGF1ZGllbmNlGAMgASgOMiouc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2VCBwoFX25hbWUixwMKFUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIKCgJpZBgBIAEoCRIxCgZmaWVsZHMYAiADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAMgAygJEg8KB3ZlcnNpb24YBCABKAUSMwoHbG9va3VwcxgFIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUxvb2t1cBIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLKAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiXAocQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRInCgZjcmVhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkYKHUNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEiUKBGRhdGEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlwKHFVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJGCh1VcGRhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJEjMKB2xvb2t1cHMYAyADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVMb29rdXAiWQojVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USMgoGc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIkUKHExvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLbG9va3VwX25hbWUYASABKAkSEAoIa2V5X2hhc2gYAiABKAwiSQodTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjgKE0N1c3RvbWVyUHJvZmlsZVNvcnQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKCAgodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCghvcmRlcl9ieRgGIAMoCzIgLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNvcnRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKwAQoeU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEjMKB3Jlc3VsdHMYASADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVSZXN1bHQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI9CiZHZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJZChNSZXNvbHV0aW9uQXR0cmlidXRlEgsKA2tleRgBIAEoCRI1CgZ2YWx1ZXMYAiADKAsyJS5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlVmFsdWUigAEKGFJlc29sdXRpb25BdHRyaWJ1dGVWYWx1ZRINCgV2YWx1ZRgBIAEoCRINCgVjb3VudBgCIAEoBRI1CgxsYXN0X3NlZW5fYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX2xhc3Rfc2Vlbl9hdCKMAgonR2V0Q3VzdG9tZXJSZXNvbHV0aW9uQXR0cmlidXRlc1Jlc3BvbnNlEhkKEXRvdGFsX3Jlc29sdXRpb25zGAEgASgFEjQKCmF0dHJpYnV0ZXMYAiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHV0aW9uQXR0cmlidXRlEjYKDWZpcnN0X3NlZW5fYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESNQoMbGFzdF9zZWVuX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhAKDl9maXJzdF9zZWVuX2F0Qg8KDV9sYXN0X3NlZW5fYXQiLAoXR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QSEQoJbW9kZWxfa2V5GAEgASgJIsACChVFZGl0b3JDb25maWdQbGFjZW1lbnQSEQoJY29uZmlnX2lkGAEgASgJEhIKCmNvbmZpZ19rZXkYAiABKAkSEAoDdXJsGAMgASgJSACIAQESGwoOYWxsb3dlZF9vcmlnaW4YBCABKAlIAYgBARITCgZoZWlnaHQYBSABKAVIAogBARISCgVsYWJlbBgGIAEoCUgDiAEBEhQKB2FwaV9rZXkYByABKAlIBIgBARIUCgdhcGlfdXJsGAggASgJSAWIAQESHgoRY29ubmVjdGlvbl9kb21haW4YCSABKAlIBogBAUIGCgRfdXJsQhEKD19hbGxvd2VkX29yaWdpbkIJCgdfaGVpZ2h0QggKBl9sYWJlbEIKCghfYXBpX2tleUIKCghfYXBpX3VybEIUChJfY29ubmVjdGlvbl9kb21haW4iUgoYR2V0RWRpdG9yQ29uZmlnc1Jlc3BvbnNlEjYKCnBsYWNlbWVudHMYASADKAsyIi5zZXR0aW5ncy52MS5FZGl0b3JDb25maWdQbGFjZW1lbnQiIAoSUmVzb2x2ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjYKE1Jlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUiIgoUVW5yZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiOAoVVW5yZXNvbHZlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIsUBChJTZWFyY2hOb3Rlc1JlcXVlc3QSDQoFcXVlcnkYASABKAkSGAoLZW50aXR5X3R5cGUYAiABKAlIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQg4KDF9lbnRpdHlfdHlwZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikgEKE1NlYXJjaE5vdGVzUmVzcG9uc2USIAoFbm90ZXMYASADKAsyES5zZXR0aW5ncy52MS5Ob3RlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIZChdNYXJrTWVudGlvbnNTZWVuUmVxdWVzdCIpChhNYXJrTWVudGlvbnNTZWVuUmVzcG9uc2USDQoFY291bnQYASABKAUiLgofR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBILCgNrZXkYASABKAkiVAogR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiIZChdHZXREZWZhdWx0TG9jYWxlUmVxdWVzdCI/ChhHZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USIwoGbG9jYWxlGAEgASgLMhMuc2V0dGluZ3MudjEuTG9jYWxlIiYKFkdldExvY2FsZUJ5Q29kZVJlcXVlc3QSDAoEY29kZRgBIAEoCSI+ChdHZXRMb2NhbGVCeUNvZGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiJgokR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0IlgKJUdldERlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IiMKFERlbGV0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCSIoChVEZWxldGVTZXR0aW5nUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIzCh9EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXF1ZXN0EhAKCGNhdGVnb3J5GAEgASgJIjEKIERlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlEg0KBWNvdW50GAEgASgFIk0KFkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QSMwoIc2V0dGluZ3MYASADKAsyIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdCIoChdCdWxrU2V0U2V0dGluZ3NSZXNwb25zZRINCgVjb3VudBgBIAEoBSIpCidFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QiWwooRW5zdXJlRGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnki8AMKDERlc2lnblRva2VucxIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSMwoIcmVzb2x2ZWQYAiABKAsyIS5zZXR0aW5ncy52MS5SZXNvbHZlZERlc2lnblRva2VucxIPCgd2ZXJzaW9uGAogASgFEh4KEXB1Ymxpc2hlZF92ZXJzaW9uGAsgASgFSACIAQESEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASPQoUc2NoZWR1bGVkX3B1Ymxpc2hfYXQYPCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESPwoWc2NoZWR1bGVkX3VucHVibGlzaF9hdBg9IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAogBAUIUChJfcHVibGlzaGVkX3ZlcnNpb25CFwoVX3NjaGVkdWxlZF9wdWJsaXNoX2F0QhkKF19zY2hlZHVsZWRfdW5wdWJsaXNoX2F0IvoEChRSZXNvbHZlZERlc2lnblRva2VucxIvCgZjb2xvcnMYASADKAsyHy5zZXR0aW5ncy52MS5SZXNvbHZlZENvbG9yVG9rZW4SOwoNZm9udF9mYW1pbGllcxgCIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udEZhbWlseVRva2VuEjoKDGZvbnRfd2VpZ2h0cxgDIAMoCzIkLnNldHRpbmdzLnYxLlJlc29sdmVkRm9udFdlaWdodFRva2VuEjcKCmZvbnRfc2l6ZXMYBCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjYKDGxpbmVfaGVpZ2h0cxgFIAMoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkTnVtYmVyVG9rZW4SPAoPbGV0dGVyX3NwYWNpbmdzGAYgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhI4Cgp0eXBvZ3JhcGh5GAcgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SNQoIc3BhY2luZ3MYCCADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjIKBXJhZGlpGAkgAygLMiMuc2V0dGluZ3MudjEuUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIxCgdzaGFkb3dzGAogAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dUb2tlbhIxCgdib3JkZXJzGAsgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJUb2tlbiJpChJSZXNvbHZlZENvbG9yVG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCABKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udEZhbWlseVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgAygJQg4KDF9kZXNjcmlwdGlvbiJuChdSZXNvbHZlZEZvbnRXZWlnaHRUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoBUIOCgxfZGVzY3JpcHRpb24ibQoWUmVzb2x2ZWREaW1lbnNpb25Ub2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24iagoTUmVzb2x2ZWROdW1iZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoAUIOCgxfZGVzY3JpcHRpb24izAEKF1Jlc29sdmVkVHlwb2dyYXBoeVRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjMKBXZhbHVlGAQgASgLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEgoFbGFiZWwYBSABKAlIAYgBARIQCgN0YWcYBiABKAlIAogBAUIOCgxfZGVzY3JpcHRpb25CCAoGX2xhYmVsQgYKBF90YWcijQEKE1Jlc29sdmVkU2hhZG93VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMAoGbGF5ZXJzGAQgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRTaGFkb3dMYXllckIOCgxfZGVzY3JpcHRpb24idQoTUmVzb2x2ZWRTaGFkb3dMYXllchIQCghvZmZzZXRfeBgBIAEoCRIQCghvZmZzZXRfeRgCIAEoCRIMCgRibHVyGAMgASgJEg4KBnNwcmVhZBgEIAEoCRINCgVjb2xvchgFIAEoCRINCgVpbnNldBgGIAEoCCKMAQoTUmVzb2x2ZWRCb3JkZXJUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIvCgV2YWx1ZRgEIAEoCzIgLnNldHRpbmdzLnYxLlJlc29sdmVkQm9yZGVyVmFsdWVCDgoMX2Rlc2NyaXB0aW9uIkIKE1Jlc29sdmVkQm9yZGVyVmFsdWUSDQoFY29sb3IYASABKAkSDQoFd2lkdGgYAiABKAkSDQoFc3R5bGUYAyABKAkimwEKF1Jlc29sdmVkVHlwb2dyYXBoeVZhbHVlEhMKC2ZvbnRfZmFtaWx5GAEgAygJEhEKCWZvbnRfc2l6ZRgCIAEoCRITCgtmb250X3dlaWdodBgDIAEoBRITCgtsaW5lX2hlaWdodBgEIAEoARIWCg5sZXR0ZXJfc3BhY2luZxgFIAEoCRIWCg50ZXh0X3RyYW5zZm9ybRgGIAEoCSJEChZHZXREZXNpZ25Ub2tlbnNSZXF1ZXN0EioKB2NoYW5uZWwYASABKA4yGS5wdWJsaXNoLnYxLlNjaGVtYUNoYW5uZWwiRAoXR2V0RGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIkYKGVVwZGF0ZURlc2lnblRva2Vuc1JlcXVlc3QSKQoIZG9jdW1lbnQYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkcKGlVwZGF0ZURlc2lnblRva2Vuc1Jlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyIcChpQdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJ+ChtQdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh4KHFVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QiSgodVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIiUKI0dldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0IlEKJEdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMinAEKIlNjaGVkdWxlRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QSLgoKcHVibGlzaF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiUAojU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIisKKUNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0IlcKKkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiNwohQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXF1ZXN0EhIKCnRva2VuX3BhdGgYASABKAkiUwoiQ291bnREZXNpZ25Ub2tlblJlZmVyZW5jZXNSZXNwb25zZRIXCg9wYXJhZ3JhcGhfY291bnQYASABKAUSFAoMcmVjb3JkX2NvdW50GAIgASgFItkCChJEZXNpZ25Ub2tlblZlcnNpb24SCgoCaWQYASABKAkSGAoQZGVzaWduX3Rva2Vuc19pZBgCIAEoCRIWCg52ZXJzaW9uX251bWJlchgDIAEoBRIpCghzbmFwc2hvdBgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSFAoMY29udGVudF9oYXNoGAUgASgJEh4KEXNvdXJjZV92ZXJzaW9uX2lkGAYgASgJSACIAQESHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAcgASgJSAGIAQESLgoKY3JlYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFwoKY3JlYXRlZF9ieRgJIAEoCUgCiAEBQhQKEl9zb3VyY2VfdmVyc2lvbl9pZEIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uQg0KC19jcmVhdGVkX2J5IioKHEdldERlc2lnblRva2VuVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiUQodR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2USMAoHdmVyc2lvbhgBIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiKYAQoeTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Iq8BCh9MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1Jlc3BvbnNlEjEKCHZlcnNpb25zGAEgAygLMh8uc2V0dGluZ3MudjEuRGVzaWduVG9rZW5WZXJzaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJuCiBSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ihAEKIVJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoLbmV3X3ZlcnNpb24YAiABKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24iRQoXR2V0UHJvamVjdFNjaGVtYVJlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJlChJQcm9qZWN0U2NoZW1hTW9kZWwSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSEwoLZmllbGRzX2pzb24YBCABKAkSEwoLY29uZmlnX2pzb24YBSABKAkiwgEKHVByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEgoKAmlkGAEgASgJEgsKA2tleRgCIAEoCRIMCgRuYW1lGAMgASgJEh0KEHNvdXJjZV9tb2RlbF9rZXkYBCABKAlIAIgBARIfChJkZWZhdWx0X3JlY29yZF9rZXkYBSABKAlIAYgBARIOCgZ2YWx1ZXMYBiADKAlCEwoRX3NvdXJjZV9tb2RlbF9rZXlCFQoTX2RlZmF1bHRfcmVjb3JkX2tleSKOAQoZUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIMCgR0eXBlGAMgASgJEg8KB2VuYWJsZWQYBCABKAgSLAoGY29uZmlnGAUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBQgkKB19jb25maWcinwMKFlByb2plY3RTY2hlbWFPcGVyYXRpb24SCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEAoIZW5kcG9pbnQYAyABKAkSEgoKdGltZW91dF9tcxgEIAEoBRIyCgxpbnB1dF9zY2hlbWEYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESMwoNb3V0cHV0X3NjaGVtYRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARIWCg5zdXBwb3J0c19hc3luYxgHIAEoCBIMCgRraW5kGAggASgJEh4KEWF0dGFjaGVkX3RvX21vZGVsGAkgASgJSAKIAQESFQoNcGFyZW50X2ZpZWxkcxgKIAMoCRIzCg1jYWNoZV9jb250cm9sGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBQg8KDV9pbnB1dF9zY2hlbWFCEAoOX291dHB1dF9zY2hlbWFCFAoSX2F0dGFjaGVkX3RvX21vZGVsQhAKDl9jYWNoZV9jb250cm9sIkQKFFByb2plY3RTY2hlbWFTZWdtZW50EgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWlzX2FjdGl2ZRgDIAEoCCJvChpQcm9qZWN0U2NoZW1hUHJvZmlsZVNjaGVtYRITCgtmaWVsZHNfanNvbhgBIAEoCRIVCg1wdWJsaWNfZmllbGRzGAIgAygJEg8KB3ZlcnNpb24YAyABKAUSFAoMbG9va3Vwc19qc29uGAQgASgJIpQEChhHZXRQcm9qZWN0U2NoZW1hUmVzcG9uc2USLwoGbW9kZWxzGAEgAygLMh8uc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU1vZGVsEj4KCmRpbWVuc2lvbnMYAiADKAsyKi5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hQ29udGV4dERpbWVuc2lvbhI+Cg5hdXRoX3Byb3ZpZGVycxgDIAMoCzImLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFBdXRoUHJvdmlkZXISNwoKb3BlcmF0aW9ucxgEIAMoCzIjLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFPcGVyYXRpb24SMwoIc2VnbWVudHMYBSADKAsyIS5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hU2VnbWVudBJECg5wcm9maWxlX3NjaGVtYRgHIAEoCzInLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hSACIAQESJgoZY3VzdG9tZXJfcGFzc3dvcmRfZW5hYmxlZBgIIAEoCEgBiAEBEiEKFGN1c3RvbWVyX290cF9lbmFibGVkGAkgASgISAKIAQFCEQoPX3Byb2ZpbGVfc2NoZW1hQhwKGl9jdXN0b21lcl9wYXNzd29yZF9lbmFibGVkQhcKFV9jdXN0b21lcl9vdHBfZW5hYmxlZCIsCh5QdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCgoCaWQYASABKAkiiQEKH1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbhI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIuCiBVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJVCiFVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiI1CidHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1JlcXVlc3QSCgoCaWQYASABKAkiVQooR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMi4gIKF0NvbnRleHREaW1lbnNpb25WZXJzaW9uEgoKAmlkGAEgASgJEhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiLwohR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlsKIkdldENvbnRleHREaW1lbnNpb25WZXJzaW9uUmVzcG9uc2USNQoHdmVyc2lvbhgBIAEoCzIkLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb25WZXJzaW9uIrsBCiNMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVxdWVzdBIcChRjb250ZXh0X2RpbWVuc2lvbl9pZBgBIAEoCRISCgVhZnRlchgCIAEoCUgAiAEBEhMKBmJlZm9yZRgDIAEoCUgBiAEBEhIKBWZpcnN0GAQgASgFSAKIAQESEQoEbGFzdBgFIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK5AQokTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1Jlc3BvbnNlEjYKCHZlcnNpb25zGAEgAygLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInMKJVJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpUBCiZSZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjkKC25ld192ZXJzaW9uGAIgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iHQobUHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IpABChxQdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIh8KHVVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXF1ZXN0IlwKHlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSImCiRHZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QiUgolR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXNSZXNwb25zZRIpCgZzdGF0dXMYASABKAsyGS5wdWJsaXNoLnYxLlB1Ymxpc2hTdGF0dXMi3AIKFFByb2ZpbGVTY2hlbWFWZXJzaW9uEgoKAmlkGAEgASgJEhkKEXByb2ZpbGVfc2NoZW1hX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiLAoeR2V0UHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlUKH0dldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USMgoHdmVyc2lvbhgBIAEoCzIhLnNldHRpbmdzLnYxLlByb2ZpbGVTY2hlbWFWZXJzaW9uIpoBCiBMaXN0UHJvZmlsZVNjaGVtYVZlcnNpb25zUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKzAQohTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEjMKCHZlcnNpb25zGAEgAygLMiEuc2V0dGluZ3MudjEuUHJvZmlsZVNjaGVtYVZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvInAKIlJlc3RvcmVQcm9maWxlU2NoZW1hVmVyc2lvblJlcXVlc3QSEgoKdmVyc2lvbl9pZBgBIAEoCRIfChJjaGFuZ2VfZGVzY3JpcHRpb24YAiABKAlIAIgBAUIVChNfY2hhbmdlX2Rlc2NyaXB0aW9uIpEBCiNSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXNwb25zZRIyCgZzY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWESNgoLbmV3X3ZlcnNpb24YAiABKAsyIS5zZXR0aW5ncy52MS5Qcm9maWxlU2NoZW1hVmVyc2lvbiIdChtQdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3Qi9gEKHFB1Ymxpc2hQcm9qZWN0U2NoZW1hUmVzcG9uc2USGAoQbW9kZWxzX3B1Ymxpc2hlZBgBIAEoBRIcChRvcGVyYXRpb25zX3B1Ymxpc2hlZBgCIAEoBRIkChxjb250ZXh0X2RpbWVuc2lvbnNfcHVibGlzaGVkGAMgASgFEiAKGGF1dGhfcHJvdmlkZXJzX3B1Ymxpc2hlZBgEIAEoBRIgChhwcm9maWxlX3NjaGVtYV9wdWJsaXNoZWQYBSABKAgSNAoQYnJlYWtpbmdfY2hhbmdlcxgGIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiIAoeR2V0UHJvamVjdFB1Ymxpc2hTdGF0dXNSZXF1ZXN0IoMBCh9HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1Jlc3BvbnNlEioKB3BlbmRpbmcYASADKAsyGS5wdWJsaXNoLnYxLlBlbmRpbmdFbnRpdHkSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UirAEKJlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJEi4KCnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0IlsKJ1NjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjsKLUNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBIKCgJpZBgBIAEoCSJiCi5DYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24inQEKI1NjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Ei4KCnB1Ymxpc2hfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjUKDHVucHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBAUIPCg1fdW5wdWJsaXNoX2F0ImIKJFNjaGVkdWxlUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSIsCipDYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QiaQorQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRI6Cg5wcm9maWxlX3NjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSqXAQoRU2hhcmVSZXNvdXJjZVR5cGUSIwofU0hBUkVfUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEh4KGlNIQVJFX1JFU09VUkNFX1RZUEVfUkVDT1JEEAESHAoYU0hBUkVfUkVTT1VSQ0VfVFlQRV9GSUxFEAISHwobU0hBUkVfUkVTT1VSQ0VfVFlQRV9QUk9GSUxFEAMqhQEKD1NoYXJlUGVybWlzc2lvbhIgChxTSEFSRV9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEEAASGQoVU0hBUkVfUEVSTUlTU0lPTl9WSUVXEAESGQoVU0hBUkVfUEVSTUlTU0lPTl9FRElUEAISGgoWU0hBUkVfUEVSTUlTU0lPTl9BRE1JThADKnsKC1NoYXJlU3RhdHVzEhwKGFNIQVJFX1NUQVRVU19VTlNQRUNJRklFRBAAEhgKFFNIQVJFX1NUQVRVU19QRU5ESU5HEAESGQoVU0hBUkVfU1RBVFVTX0FDQ0VQVEVEEAISGQoVU0hBUkVfU1RBVFVTX0RFQ0xJTkVEEAMqrQEKHUN1c3RvbWVyUHJvZmlsZUxvb2t1cEF1ZGllbmNlEjAKLENVU1RPTUVSX1BST0ZJTEVfTE9PS1VQX0FVRElFTkNFX1VOU1BFQ0lGSUVEEAASLQopQ1VTVE9NRVJfUFJPRklMRV9MT09LVVBfQVVESUVOQ0VfT1BFUkFUT1IQARIrCidDVVNUT01FUl9QUk9GSUxFX0xPT0tVUF9BVURJRU5DRV9QVUJMSUMQAjKwTQoPU2V0dGluZ3NTZXJ2aWNlElAKC0dldFNldHRpbmdzEh8uc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXF1ZXN0GiAuc2V0dGluZ3MudjEuR2V0U2V0dGluZ3NSZXNwb25zZRJWCg1VcGRhdGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuVXBkYXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVzcG9uc2USVgoNRGVsZXRlU2V0dGluZxIhLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdSZXF1ZXN0GiIuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1Jlc3BvbnNlEncKGERlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeRIsLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlcXVlc3QaLS5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nc0J5Q2F0ZWdvcnlSZXNwb25zZRJcCg9CdWxrU2V0U2V0dGluZ3MSIy5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXF1ZXN0GiQuc2V0dGluZ3MudjEuQnVsa1NldFNldHRpbmdzUmVzcG9uc2USVgoNTGlzdEF1ZGl0TG9ncxIhLnNldHRpbmdzLnYxLkxpc3RBdWRpdExvZ3NSZXF1ZXN0GiIuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEk0KCkNyZWF0ZU5vdGUSHi5zZXR0aW5ncy52MS5DcmVhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXNwb25zZRJECgdHZXROb3RlEhsuc2V0dGluZ3MudjEuR2V0Tm90ZVJlcXVlc3QaHC5zZXR0aW5ncy52MS5HZXROb3RlUmVzcG9uc2USSgoJTGlzdE5vdGVzEh0uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVxdWVzdBoeLnNldHRpbmdzLnYxLkxpc3ROb3Rlc1Jlc3BvbnNlEk0KClVwZGF0ZU5vdGUSHi5zZXR0aW5ncy52MS5VcGRhdGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXNwb25zZRJNCgpEZWxldGVOb3RlEh4uc2V0dGluZ3MudjEuRGVsZXRlTm90ZVJlcXVlc3QaHy5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVzcG9uc2USUAoLUmVzb2x2ZU5vdGUSHy5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5SZXNvbHZlTm90ZVJlc3BvbnNlElYKDVVucmVzb2x2ZU5vdGUSIS5zZXR0aW5ncy52MS5VbnJlc29sdmVOb3RlUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXNwb25zZRJQCgtTZWFyY2hOb3RlcxIfLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLlNlYXJjaE5vdGVzUmVzcG9uc2USWQoOTGlzdE15TWVudGlvbnMSIi5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1JlcXVlc3QaIy5zZXR0aW5ncy52MS5MaXN0TXlNZW50aW9uc1Jlc3BvbnNlEmgKE1VwZGF0ZU1lbnRpb25TdGF0dXMSJy5zZXR0aW5ncy52MS5VcGRhdGVNZW50aW9uU3RhdHVzUmVxdWVzdBooLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRJfChBNYXJrTWVudGlvbnNTZWVuEiQuc2V0dGluZ3MudjEuTWFya01lbnRpb25zU2VlblJlcXVlc3QaJS5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVzcG9uc2USUAoLTGlzdExvY2FsZXMSHy5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5MaXN0TG9jYWxlc1Jlc3BvbnNlEkoKCUdldExvY2FsZRIdLnNldHRpbmdzLnYxLkdldExvY2FsZVJlcXVlc3QaHi5zZXR0aW5ncy52MS5HZXRMb2NhbGVSZXNwb25zZRJfChBHZXREZWZhdWx0TG9jYWxlEiQuc2V0dGluZ3MudjEuR2V0RGVmYXVsdExvY2FsZVJlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVzcG9uc2USXAoPR2V0TG9jYWxlQnlDb2RlEiMuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBokLnNldHRpbmdzLnYxLkdldExvY2FsZUJ5Q29kZVJlc3BvbnNlElMKDENyZWF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5DcmVhdGVMb2NhbGVSZXNwb25zZRJTCgxVcGRhdGVMb2NhbGUSIC5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuVXBkYXRlTG9jYWxlUmVzcG9uc2USUwoMRGVsZXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlbGV0ZUxvY2FsZVJlc3BvbnNlEmIKEUdldE5hdlByZWZlcmVuY2VzEiUuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXF1ZXN0GiYuc2V0dGluZ3MudjEuR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRJrChRVcGRhdGVOYXZQcmVmZXJlbmNlcxIoLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVxdWVzdBopLnNldHRpbmdzLnYxLlVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USZQoSTGlzdFJlY2VudGx5T3BlbmVkEiYuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmgKE1RyYWNrUmVjZW50bHlPcGVuZWQSJy5zZXR0aW5ncy52MS5UcmFja1JlY2VudGx5T3BlbmVkUmVxdWVzdBooLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXNwb25zZRJrChRSZW1vdmVSZWNlbnRseU9wZW5lZBIoLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVxdWVzdBopLnNldHRpbmdzLnYxLlJlbW92ZVJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTQ2xlYXJSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLkNsZWFyUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlElAKC0NyZWF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuQ3JlYXRlU2hhcmVSZXNwb25zZRJHCghHZXRTaGFyZRIcLnNldHRpbmdzLnYxLkdldFNoYXJlUmVxdWVzdBodLnNldHRpbmdzLnYxLkdldFNoYXJlUmVzcG9uc2USTQoKTGlzdFNoYXJlcxIeLnNldHRpbmdzLnYxLkxpc3RTaGFyZXNSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1Jlc3BvbnNlElAKC1VwZGF0ZVNoYXJlEh8uc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuVXBkYXRlU2hhcmVSZXNwb25zZRJQCgtSZXZva2VTaGFyZRIfLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJldm9rZVNoYXJlUmVzcG9uc2USUAoLQWNjZXB0U2hhcmUSHy5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5BY2NlcHRTaGFyZVJlc3BvbnNlElMKDERlY2xpbmVTaGFyZRIgLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5EZWNsaW5lU2hhcmVSZXNwb25zZRJuChVMaXN0Q29udGV4dERpbWVuc2lvbnMSKS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0Giouc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25zUmVzcG9uc2USaAoTR2V0Q29udGV4dERpbWVuc2lvbhInLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giguc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlc3BvbnNlEncKGEdldENvbnRleHREaW1lbnNpb25CeUtleRIsLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlcXVlc3QaLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXNwb25zZRJxChZDcmVhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWVXBkYXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnEKFkRlbGV0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5EZWxldGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzEi0uc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblZhbHVlc1JlcXVlc3QaLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVzcG9uc2USdwoYR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hEiwuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBotLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEmUKEkdldEN1c3RvbWVyUHJvZmlsZRImLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaJy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVDcmVhdGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5DcmVhdGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USbgoVVXBkYXRlQ3VzdG9tZXJQcm9maWxlEikuc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBoqLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEoABChtVcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWESLy5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0GjAuc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2UScQoWU2VhcmNoQ3VzdG9tZXJQcm9maWxlcxIqLnNldHRpbmdzLnYxLlNlYXJjaEN1c3RvbWVyUHJvZmlsZXNSZXF1ZXN0Gisuc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEm4KFUxvb2t1cEN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkxvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5Mb29rdXBDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVEZWxldGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USjAEKH0dldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXMSMy5zZXR0aW5ncy52MS5HZXRDdXN0b21lclJlc29sdXRpb25BdHRyaWJ1dGVzUmVxdWVzdBo0LnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUmVzb2x1dGlvbkF0dHJpYnV0ZXNSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USfQoaR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb24SLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaLy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9maWxlU2NoZW1hVmVyc2lvbhIrLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USegoZTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9ucxItLnNldHRpbmdzLnYxLkxpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEoABChtSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb24SLy5zZXR0aW5ncy52MS5SZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0GjAuc2V0dGluZ3MudjEuUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USawoUUHVibGlzaFByb2ZpbGVTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlVucHVibGlzaFByb2ZpbGVTY2hlbWESKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBorLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRKGAQodR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXMSMS5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoMBChxTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoEjAuc2V0dGluZ3MudjEuU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaMS5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USmAEKI0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoEjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Gjguc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2gSLy5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0GjAuc2V0dGluZ3MudjEuU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2gSNi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBo3LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USbgoVR2V0RGVzaWduVG9rZW5WZXJzaW9uEikuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBoqLnNldHRpbmdzLnYxLkdldERlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEnQKF0xpc3REZXNpZ25Ub2tlblZlcnNpb25zEisuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRJ6ChlSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uEi0uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
754
+ var file_settings_v1_settings = /* @__PURE__ */ fileDesc11("ChpzZXR0aW5ncy92MS9zZXR0aW5ncy5wcm90bxILc2V0dGluZ3MudjEiggMKB1NldHRpbmcSCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEhAKCGNhdGVnb3J5GAMgASgJEisKBXZhbHVlGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhkKDGRpc3BsYXlfbmFtZRgFIAEoCUgBiAEBEhgKC2Rlc2NyaXB0aW9uGAYgASgJSAKIAQESEQoJZGF0YV90eXBlGAcgASgJEhEKCWlzX3B1YmxpYxgIIAEoCBIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgDiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl92YWx1ZUIPCg1fZGlzcGxheV9uYW1lQg4KDF9kZXNjcmlwdGlvbkINCgtfcHJvamVjdF9pZCKrBAoIQXVkaXRMb2cSCgoCaWQYASABKAkSLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIUCgd1c2VyX2lkGAMgASgJSACIAQESFgoJdGVuYW50X2lkGAQgASgJSAGIAQESFwoKcHJvamVjdF9pZBgFIAEoCUgCiAEBEg4KBmFjdGlvbhgGIAEoCRIVCg1yZXNvdXJjZV90eXBlGAcgASgJEhgKC3Jlc291cmNlX2lkGAggASgJSAOIAQESLAoGYmVmb3JlGAkgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgEiAEBEisKBWFmdGVyGAogASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgFiAEBEi4KCG1ldGFkYXRhGAsgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgGiAEBEhcKCmlwX2FkZHJlc3MYDCABKAlIB4gBARIXCgp1c2VyX2FnZW50GA0gASgJSAiIAQESFwoKcmVxdWVzdF9pZBgOIAEoCUgJiAEBQgoKCF91c2VyX2lkQgwKCl90ZW5hbnRfaWRCDQoLX3Byb2plY3RfaWRCDgoMX3Jlc291cmNlX2lkQgkKB19iZWZvcmVCCAoGX2FmdGVyQgsKCV9tZXRhZGF0YUINCgtfaXBfYWRkcmVzc0INCgtfdXNlcl9hZ2VudEINCgtfcmVxdWVzdF9pZCKdBQoETm90ZRIKCgJpZBgBIAEoCRITCgtlbnRpdHlfdHlwZRgCIAEoCRIRCgllbnRpdHlfaWQYAyABKAkSHwoSZW50aXR5X25hdHVyYWxfa2V5GAQgASgJSACIAQESFwoKdmVyc2lvbl9pZBgFIAEoCUgBiAEBEigKB2NvbnRlbnQYBiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eh8KEmNvbnRlbnRfcGxhaW5fdGV4dBgHIAEoCUgCiAEBEhsKDnBhcmVudF9ub3RlX2lkGAogASgJSAOIAQESGwoOdGhyZWFkX3Jvb3RfaWQYCyABKAlIBIgBARITCgtpc19yZXNvbHZlZBgPIAEoCBI0CgtyZXNvbHZlZF9hdBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBYgBARIYCgtyZXNvbHZlZF9ieRgRIAEoCUgGiAEBEi4KCG1ldGFkYXRhGBQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhEKCXRlbmFudF9pZBgeIAEoCRIXCgpwcm9qZWN0X2lkGB8gASgJSAiIAQESEgoKY3JlYXRlZF9ieRgoIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIVChNfZW50aXR5X25hdHVyYWxfa2V5Qg0KC192ZXJzaW9uX2lkQhUKE19jb250ZW50X3BsYWluX3RleHRCEQoPX3BhcmVudF9ub3RlX2lkQhEKD190aHJlYWRfcm9vdF9pZEIOCgxfcmVzb2x2ZWRfYXRCDgoMX3Jlc29sdmVkX2J5QgsKCV9tZXRhZGF0YUINCgtfcHJvamVjdF9pZCLkBQoFU2hhcmUSCgoCaWQYASABKAkSNQoNcmVzb3VyY2VfdHlwZRgCIAEoDjIeLnNldHRpbmdzLnYxLlNoYXJlUmVzb3VyY2VUeXBlEhYKCXJlY29yZF9pZBgDIAEoCUgAiAEBEhQKB2ZpbGVfaWQYBCABKAlIAYgBARIWCgltb2RlbF9rZXkYBSABKAlIAogBARIfChdzaGFyZWRfd2l0aF9jdXN0b21lcl9pZBgGIAEoCRIwCgpwZXJtaXNzaW9uGAcgASgOMhwuc2V0dGluZ3MudjEuU2hhcmVQZXJtaXNzaW9uEiAKE3Byb2ZpbGVfY3VzdG9tZXJfaWQYCCABKAlIA4gBARIoCgZzdGF0dXMYCiABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1cxI0CgthY2NlcHRlZF9hdBgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIzCgpleHBpcmVzX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIBogBARIXCgpyZXZva2VkX2J5GB8gASgJSAeIAQESMwoKcmV2b2tlZF9hdBggIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBICIgBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIMCgpfcmVjb3JkX2lkQgoKCF9maWxlX2lkQgwKCl9tb2RlbF9rZXlCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWRCDgoMX2FjY2VwdGVkX2F0Qg0KC19leHBpcmVzX2F0Qg0KC19jcmVhdGVkX2J5Qg0KC19yZXZva2VkX2J5Qg0KC19yZXZva2VkX2F0IlIKEkdldFNldHRpbmdzUmVxdWVzdBIVCghjYXRlZ29yeRgBIAEoCUgAiAEBEhAKA2tleRgCIAEoCUgBiAEBQgsKCV9jYXRlZ29yeUIGCgRfa2V5Ij0KE0dldFNldHRpbmdzUmVzcG9uc2USJgoIc2V0dGluZ3MYASADKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIksKFFVwZGF0ZVNldHRpbmdSZXF1ZXN0EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiPgoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiUKB3NldHRpbmcYASABKAsyFC5zZXR0aW5ncy52MS5TZXR0aW5nIsUBChRMaXN0QXVkaXRMb2dzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilwEKFUxpc3RBdWRpdExvZ3NSZXNwb25zZRIjCgRsb2dzGAEgAygLMhUuc2V0dGluZ3MudjEuQXVkaXRMb2cSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIpUBChFDcmVhdGVOb3RlUmVxdWVzdBITCgtlbnRpdHlfdHlwZRgBIAEoCRIRCgllbnRpdHlfaWQYAiABKAkSKAoHY29udGVudBgDIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSGwoOcGFyZW50X25vdGVfaWQYBCABKAlIAIgBAUIRCg9fcGFyZW50X25vdGVfaWQiNQoSQ3JlYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIhwKDkdldE5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIjIKD0dldE5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSLBAQoQTGlzdE5vdGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgEIAEoCUgBiAEBEhMKBmJlZm9yZRgFIAEoCUgCiAEBEhIKBWZpcnN0GAYgASgFSAOIAQESEQoEbGFzdBgHIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QikAEKEUxpc3ROb3Rlc1Jlc3BvbnNlEiAKBW5vdGVzGAEgAygLMhEuc2V0dGluZ3MudjEuTm90ZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8ihAEKEVVwZGF0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJEi0KB2NvbnRlbnQYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESGAoLaXNfcmVzb2x2ZWQYAyABKAhIAYgBAUIKCghfY29udGVudEIOCgxfaXNfcmVzb2x2ZWQiNQoSVXBkYXRlTm90ZVJlc3BvbnNlEh8KBG5vdGUYASABKAsyES5zZXR0aW5ncy52MS5Ob3RlIh8KEURlbGV0ZU5vdGVSZXF1ZXN0EgoKAmlkGAEgASgJIiUKEkRlbGV0ZU5vdGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIqwFCgtOb3RlTWVudGlvbhIKCgJpZBgBIAEoCRIPCgdub3RlX2lkGAIgASgJEhkKEW1lbnRpb25lZF91c2VyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIwCgdzZWVuX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEjgKD2Fja25vd2xlZGdlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI1Cgxjb21wbGV0ZWRfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQESGwoOY29tcGxldGVkX25vdGUYCCABKAlIA4gBARI1CgxkaXNtaXNzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSASIAQESGwoOZGlzbWlzc19yZWFzb24YCiABKAlIBYgBARIxCghkdWVfZGF0ZRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBogBARIRCgl0ZW5hbnRfaWQYFCABKAkSFwoKcHJvamVjdF9pZBgVIAEoCUgHiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9zZWVuX2F0QhIKEF9hY2tub3dsZWRnZWRfYXRCDwoNX2NvbXBsZXRlZF9hdEIRCg9fY29tcGxldGVkX25vdGVCDwoNX2Rpc21pc3NlZF9hdEIRCg9fZGlzbWlzc19yZWFzb25CCwoJX2R1ZV9kYXRlQg0KC19wcm9qZWN0X2lkItoBChJNZW50aW9uV2l0aENvbnRleHQSKQoHbWVudGlvbhgBIAEoCzIYLnNldHRpbmdzLnYxLk5vdGVNZW50aW9uEh8KBG5vdGUYAiABKAsyES5zZXR0aW5ncy52MS5Ob3RlEhgKC2F1dGhvcl9uYW1lGAMgASgJSACIAQESGAoLZW50aXR5X3R5cGUYBCABKAlIAYgBARIWCgllbnRpdHlfaWQYBSABKAlIAogBAUIOCgxfYXV0aG9yX25hbWVCDgoMX2VudGl0eV90eXBlQgwKCl9lbnRpdHlfaWQiTwoNTWVudGlvbkNvdW50cxIPCgdwZW5kaW5nGAEgASgFEhAKCHBhc3RfZHVlGAIgASgFEhsKE2NvbXBsZXRlZF90aGlzX3dlZWsYAyABKAUixgEKFUxpc3RNeU1lbnRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QizwEKFkxpc3RNeU1lbnRpb25zUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5NZW50aW9uV2l0aENvbnRleHQSDQoFdG90YWwYAiABKAUSKgoGY291bnRzGAMgASgLMhouc2V0dGluZ3MudjEuTWVudGlvbkNvdW50cxIrCglwYWdlX2luZm8YBCABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAUgAygJQgwKCl9wYWdlX2luZm8ioAEKGlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0EhIKCm1lbnRpb25faWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhsKDmNvbXBsZXRlZF9ub3RlGAMgASgJSACIAQESGwoOZGlzbWlzc19yZWFzb24YBCABKAlIAYgBAUIRCg9fY29tcGxldGVkX25vdGVCEQoPX2Rpc21pc3NfcmVhc29uIkgKG1VwZGF0ZU1lbnRpb25TdGF0dXNSZXNwb25zZRIpCgdtZW50aW9uGAEgASgLMhguc2V0dGluZ3MudjEuTm90ZU1lbnRpb24ilAIKEkNyZWF0ZVNoYXJlUmVxdWVzdBI1Cg1yZXNvdXJjZV90eXBlGAEgASgOMh4uc2V0dGluZ3MudjEuU2hhcmVSZXNvdXJjZVR5cGUSFgoJcmVjb3JkX2lkGAIgASgJSACIAQESFAoHZmlsZV9pZBgDIAEoCUgBiAEBEhMKC2N1c3RvbWVyX2lkGAQgASgJEjAKCnBlcm1pc3Npb24YBSABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb24SIAoTcHJvZmlsZV9jdXN0b21lcl9pZBgGIAEoCUgCiAEBQgwKCl9yZWNvcmRfaWRCCgoIX2ZpbGVfaWRCFgoUX3Byb2ZpbGVfY3VzdG9tZXJfaWQiOAoTQ3JlYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIh0KD0dldFNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSI1ChBHZXRTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUiwgEKEUxpc3RTaGFyZXNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAQgASgJSAGIAQESEwoGYmVmb3JlGAUgASgJSAKIAQESEgoFZmlyc3QYBiABKAVIA4gBARIRCgRsYXN0GAcgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKTAQoSTGlzdFNoYXJlc1Jlc3BvbnNlEiIKBnNoYXJlcxgBIAMoCzISLnNldHRpbmdzLnYxLlNoYXJlEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKgAQoSVXBkYXRlU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJEjUKCnBlcm1pc3Npb24YAiABKA4yHC5zZXR0aW5ncy52MS5TaGFyZVBlcm1pc3Npb25IAIgBARItCgZzdGF0dXMYAyABKA4yGC5zZXR0aW5ncy52MS5TaGFyZVN0YXR1c0gBiAEBQg0KC19wZXJtaXNzaW9uQgkKB19zdGF0dXMiOAoTVXBkYXRlU2hhcmVSZXNwb25zZRIhCgVzaGFyZRgBIAEoCzISLnNldHRpbmdzLnYxLlNoYXJlIiAKElJldm9rZVNoYXJlUmVxdWVzdBIKCgJpZBgBIAEoCSImChNSZXZva2VTaGFyZVJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiIAoSQWNjZXB0U2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjgKE0FjY2VwdFNoYXJlUmVzcG9uc2USIQoFc2hhcmUYASABKAsyEi5zZXR0aW5ncy52MS5TaGFyZSIhChNEZWNsaW5lU2hhcmVSZXF1ZXN0EgoKAmlkGAEgASgJIjkKFERlY2xpbmVTaGFyZVJlc3BvbnNlEiEKBXNoYXJlGAEgASgLMhIuc2V0dGluZ3MudjEuU2hhcmUivwMKBkxvY2FsZRIKCgJpZBgBIAEoCRIOCgZsb2NhbGUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEhgKC25hdGl2ZV9uYW1lGAQgASgJSACIAQESEgoKaXNfZGVmYXVsdBgFIAEoCBIRCglpc19hY3RpdmUYBiABKAgSDgoGaXNfcnRsGAcgASgIEhwKD2ZhbGxiYWNrX2xvY2FsZRgIIAEoCUgBiAEBEhkKEWZhbGxiYWNrX3ByaW9yaXR5GAkgASgFEhEKCXRlbmFudF9pZBgUIAEoCRISCgpwcm9qZWN0X2lkGBUgASgJEhcKCmNyZWF0ZWRfYnkYHiABKAlIAogBARIXCgp1cGRhdGVkX2J5GB8gASgJSAOIAQESLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDgoMX25hdGl2ZV9uYW1lQhIKEF9mYWxsYmFja19sb2NhbGVCDQoLX2NyZWF0ZWRfYnlCDQoLX3VwZGF0ZWRfYnkiwwEKEkxpc3RMb2NhbGVzUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QilgEKE0xpc3RMb2NhbGVzUmVzcG9uc2USJAoHbG9jYWxlcxgBIAMoCzITLnNldHRpbmdzLnYxLkxvY2FsZRINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8iHgoQR2V0TG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChFHZXRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUi3wEKE0NyZWF0ZUxvY2FsZVJlcXVlc3QSDgoGbG9jYWxlGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIYCgtuYXRpdmVfbmFtZRgDIAEoCUgAiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAYgBARITCgZpc19ydGwYBSABKAhIAogBARIcCg9mYWxsYmFja19sb2NhbGUYBiABKAlIA4gBAUIOCgxfbmF0aXZlX25hbWVCDQoLX2lzX2RlZmF1bHRCCQoHX2lzX3J0bEISChBfZmFsbGJhY2tfbG9jYWxlIjsKFENyZWF0ZUxvY2FsZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSKXAgoTVXBkYXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCRIZCgxkaXNwbGF5X25hbWUYAiABKAlIAIgBARIYCgtuYXRpdmVfbmFtZRgDIAEoCUgBiAEBEhcKCmlzX2RlZmF1bHQYBCABKAhIAogBARIWCglpc19hY3RpdmUYBSABKAhIA4gBARITCgZpc19ydGwYBiABKAhIBIgBARIcCg9mYWxsYmFja19sb2NhbGUYByABKAlIBYgBAUIPCg1fZGlzcGxheV9uYW1lQg4KDF9uYXRpdmVfbmFtZUINCgtfaXNfZGVmYXVsdEIMCgpfaXNfYWN0aXZlQgkKB19pc19ydGxCEgoQX2ZhbGxiYWNrX2xvY2FsZSI7ChRVcGRhdGVMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiIQoTRGVsZXRlTG9jYWxlUmVxdWVzdBIKCgJpZBgBIAEoCSInChREZWxldGVMb2NhbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIpQBCg5OYXZQcmVmZXJlbmNlcxIZChFmYXZvcml0ZV9wcm9qZWN0cxgBIAMoCRIaChJmYXZvcml0ZV9uYXZfaXRlbXMYAiADKAkSGgoSY29sbGFwc2VkX3NlY3Rpb25zGAMgAygJEi8KDm5hdl9pdGVtX29yZGVyGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCIaChhHZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QiTQoZR2V0TmF2UHJlZmVyZW5jZXNSZXNwb25zZRIwCgtwcmVmZXJlbmNlcxgBIAEoCzIbLnNldHRpbmdzLnYxLk5hdlByZWZlcmVuY2VzIvwBChtVcGRhdGVOYXZQcmVmZXJlbmNlc1JlcXVlc3QSNQoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlc0gAiAEBEh4KEXRvZ2dsZV9wcm9qZWN0X2lkGAIgASgJSAGIAQESHAoPdG9nZ2xlX25hdl9pdGVtGAMgASgJSAKIAQESGwoOdG9nZ2xlX3NlY3Rpb24YBCABKAlIA4gBAUIOCgxfcHJlZmVyZW5jZXNCFAoSX3RvZ2dsZV9wcm9qZWN0X2lkQhIKEF90b2dnbGVfbmF2X2l0ZW1CEQoPX3RvZ2dsZV9zZWN0aW9uIlAKHFVwZGF0ZU5hdlByZWZlcmVuY2VzUmVzcG9uc2USMAoLcHJlZmVyZW5jZXMYASABKAsyGy5zZXR0aW5ncy52MS5OYXZQcmVmZXJlbmNlcyJeChJSZWNlbnRseU9wZW5lZEl0ZW0SDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCRINCgVsYWJlbBgDIAEoCRIMCgRwYXRoGAQgASgJEhEKCXRpbWVzdGFtcBgFIAEoAyKTAQoZTGlzdFJlY2VudGx5T3BlbmVkUmVxdWVzdBISCgVhZnRlchgBIAEoCUgAiAEBEhMKBmJlZm9yZRgCIAEoCUgBiAEBEhIKBWZpcnN0GAMgASgFSAKIAQESEQoEbGFzdBgEIAEoBUgDiAEBQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKYAQoaTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USLgoFaXRlbXMYASADKAsyHy5zZXR0aW5ncy52MS5SZWNlbnRseU9wZW5lZEl0ZW0SKwoJcGFnZV9pbmZvGAIgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgDIAMoCUIMCgpfcGFnZV9pbmZvIlMKGlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSDQoFbGFiZWwYAyABKAkSDAoEcGF0aBgEIAEoCSIuChtUcmFja1JlY2VudGx5T3BlbmVkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCI3ChtSZW1vdmVSZWNlbnRseU9wZW5lZFJlcXVlc3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIvChxSZW1vdmVSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiHAoaQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QiLgobQ2xlYXJSZWNlbnRseU9wZW5lZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgizwUKEENvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSGAoLZGVzY3JpcHRpb24YBCABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgFIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAYgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgHIAEoCUgBiAEBEhEKCWlzX3N5c3RlbRgIIAEoCBIXCg9idWlsdF9pbl92YWx1ZXMYCSADKAkSEQoJZGF0YV90eXBlGAogASgJEhAKCGNhdGVnb3J5GAsgASgJEhMKC2lzX3JlcXVpcmVkGAwgASgIEhIKCnNvcnRfb3JkZXIYDSABKAUSEQoJdGVuYW50X2lkGBQgASgJEhIKCnByb2plY3RfaWQYFSABKAkSFwoKY3JlYXRlZF9ieRgeIAEoCUgCiAEBEhcKCnVwZGF0ZWRfYnkYHyABKAlIA4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Qg0KC19jcmVhdGVkX2J5Qg0KC191cGRhdGVkX2J5QhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIzChVDb250ZXh0RGltZW5zaW9uVmFsdWUSCwoDa2V5GAEgASgJEg0KBWxhYmVsGAIgASgJIrYBChxMaXN0Q29udGV4dERpbWVuc2lvbnNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirQEKHUxpc3RDb250ZXh0RGltZW5zaW9uc1Jlc3BvbnNlEjEKCmRpbWVuc2lvbnMYASADKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIoChpHZXRDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJPChtHZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiLLAQodQ3JlYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARITCgtzb3VyY2VfdHlwZRgEIAEoCRIYChBzb3VyY2VfbW9kZWxfa2V5GAUgASgJEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgGIAEoCUgBiAEBQg4KDF9kZXNjcmlwdGlvbkIVChNfZGVmYXVsdF9yZWNvcmRfa2V5IlIKHkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIv8BCh1VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCRIRCgRuYW1lGAIgASgJSACIAQESGAoLZGVzY3JpcHRpb24YAyABKAlIAYgBARIdChBzb3VyY2VfbW9kZWxfa2V5GAQgASgJSAKIAQESHwoSZGVmYXVsdF9yZWNvcmRfa2V5GAUgASgJSAOIAQESFAoHcHVibGlzaBgGIAEoCEgEiAEBQgcKBV9uYW1lQg4KDF9kZXNjcmlwdGlvbkITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5QgoKCF9wdWJsaXNoIlIKHlVwZGF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIisKHURlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIjEKHkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIItEBCiBHZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBIVCg1kaW1lbnNpb25fa2V5GAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCCQoHX3NlYXJjaEIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QisgEKIUdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRIyCgZ2YWx1ZXMYASADKAsyIi5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmFsdWUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIqICChRDdXN0b21lclByb2ZpbGVGaWVsZBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEdHlwZRgDIAEoCRINCgVsYWJlbBgEIAEoCRIQCghyZXF1aXJlZBgFIAEoCBIWCgloZWxwX3RleHQYBiABKAlIAIgBARIYCgtwbGFjZWhvbGRlchgHIAEoCUgBiAEBEiwKBmNvbmZpZxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAogBARImCgZhY2Nlc3MYCSABKAsyFi5jb21tb24udjEuRmllbGRBY2Nlc3MSEQoJcXVlcnlhYmxlGAogASgIQgwKCl9oZWxwX3RleHRCDgoMX3BsYWNlaG9sZGVyQgkKB19jb25maWcigQEKFUN1c3RvbWVyUHJvZmlsZUxvb2t1cBIOCgZrZXlfYnkYASADKAkSEQoEbmFtZRgCIAEoCUgAiAEBEjwKCGF1ZGllbmNlGAMgASgOMiouc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2VCBwoFX25hbWUixwMKFUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIKCgJpZBgBIAEoCRIxCgZmaWVsZHMYAiADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAMgAygJEg8KB3ZlcnNpb24YBCABKAUSMwoHbG9va3VwcxgFIAMoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZUxvb2t1cBIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBQhcKFV9zY2hlZHVsZWRfcHVibGlzaF9hdEIZChdfc2NoZWR1bGVkX3VucHVibGlzaF9hdCIhCh9HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0IlYKIEdldEN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYSLyAwoTVmFyaWFudENhdGFsb2dFbnRyeRIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgFIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESEAoIcHJpb3JpdHkYBiABKAUSEgoKaXNfZGVmYXVsdBgHIAEoCBIRCglpc19hY3RpdmUYCCABKAgSGAoLZmFsbGJhY2tfaWQYCiABKAlIAogBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIXCgpjcmVhdGVkX2J5GB4gASgJSAOIAQESFwoKdXBkYXRlZF9ieRgfIAEoCUgEiAEBEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkISChBfdGFyZ2V0aW5nX3J1bGVzQg4KDF9mYWxsYmFja19pZEINCgtfY3JlYXRlZF9ieUINCgtfdXBkYXRlZF9ieSLKAQoZTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgDIAEoCUgBiAEBEhMKBmJlZm9yZRgEIAEoCUgCiAEBEhIKBWZpcnN0GAUgASgFSAOIAQESEQoEbGFzdBgGIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiqgEKGkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEjEKB2VudHJpZXMYASADKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Eg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyIrCh1HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBIKCgJpZBgBIAEoCSJRCh5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5IqsCCiBDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKD3RhcmdldGluZ19ydWxlcxgEIAEoCzIeLmV4cHJlc3Npb25zLnYxLlJ1bGVFeHByZXNzaW9uSAGIAQESFQoIcHJpb3JpdHkYBSABKAVIAogBARIXCgppc19kZWZhdWx0GAYgASgISAOIAQESFgoJaXNfYWN0aXZlGAcgASgISASIAQFCDgoMX2Rlc2NyaXB0aW9uQhIKEF90YXJnZXRpbmdfcnVsZXNCCwoJX3ByaW9yaXR5Qg0KC19pc19kZWZhdWx0QgwKCl9pc19hY3RpdmUiVAohQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSK4AgogVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QSCgoCaWQYASABKAkSEQoEbmFtZRgCIAEoCUgAiAEBEhgKC2Rlc2NyaXB0aW9uGAMgASgJSAGIAQESPAoPdGFyZ2V0aW5nX3J1bGVzGAQgASgLMh4uZXhwcmVzc2lvbnMudjEuUnVsZUV4cHJlc3Npb25IAogBARIVCghwcmlvcml0eRgFIAEoBUgDiAEBEhcKCmlzX2RlZmF1bHQYBiABKAhIBIgBARIWCglpc19hY3RpdmUYByABKAhIBYgBAUIHCgVfbmFtZUIOCgxfZGVzY3JpcHRpb25CEgoQX3RhcmdldGluZ19ydWxlc0ILCglfcHJpb3JpdHlCDQoLX2lzX2RlZmF1bHRCDAoKX2lzX2FjdGl2ZSJUCiFVcGRhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USLwoFZW50cnkYASABKAsyIC5zZXR0aW5ncy52MS5WYXJpYW50Q2F0YWxvZ0VudHJ5Ii4KIERlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0EgoKAmlkGAEgASgJIjQKIURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjAKGUdldEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiQwoaR2V0Q3VzdG9tZXJQcm9maWxlUmVzcG9uc2USJQoEZGF0YRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiXAocQ3JlYXRlQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRInCgZjcmVhdGUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IkYKHUNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEiUKBGRhdGEYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IlwKHFVwZGF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSJwoGdXBkYXRlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCJGCh1VcGRhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRIlCgRkYXRhGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdCKjAQoiVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVxdWVzdBIxCgZmaWVsZHMYASADKAsyIS5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVGaWVsZBIVCg1wdWJsaWNfZmllbGRzGAIgAygJEjMKB2xvb2t1cHMYAyADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVMb29rdXAiWQojVXBkYXRlQ3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USMgoGc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIkUKHExvb2t1cEN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLbG9va3VwX25hbWUYASABKAkSEAoIa2V5X2hhc2gYAiABKAwiSQodTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiUwoVQ3VzdG9tZXJQcm9maWxlUmVzdWx0EhMKC2N1c3RvbWVyX2lkGAEgASgJEiUKBGRhdGEYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0IjgKE0N1c3RvbWVyUHJvZmlsZVNvcnQSDQoFZmllbGQYASABKAkSEgoKZGVzY2VuZGluZxgCIAEoCCKCAgodU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBARIrCgV3aGVyZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBIgBARIyCghvcmRlcl9ieRgGIAMoCzIgLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNvcnRCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0QggKBl93aGVyZSKwAQoeU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1Jlc3BvbnNlEjMKB3Jlc3VsdHMYASADKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVSZXN1bHQSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIjMKHERlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkiMAodRGVsZXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCIsChdHZXRFZGl0b3JDb25maWdzUmVxdWVzdBIRCgltb2RlbF9rZXkYASABKAkiwAIKFUVkaXRvckNvbmZpZ1BsYWNlbWVudBIRCgljb25maWdfaWQYASABKAkSEgoKY29uZmlnX2tleRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIbCg5hbGxvd2VkX29yaWdpbhgEIAEoCUgBiAEBEhMKBmhlaWdodBgFIAEoBUgCiAEBEhIKBWxhYmVsGAYgASgJSAOIAQESFAoHYXBpX2tleRgHIAEoCUgEiAEBEhQKB2FwaV91cmwYCCABKAlIBYgBARIeChFjb25uZWN0aW9uX2RvbWFpbhgJIAEoCUgGiAEBQgYKBF91cmxCEQoPX2FsbG93ZWRfb3JpZ2luQgkKB19oZWlnaHRCCAoGX2xhYmVsQgoKCF9hcGlfa2V5QgoKCF9hcGlfdXJsQhQKEl9jb25uZWN0aW9uX2RvbWFpbiJSChhHZXRFZGl0b3JDb25maWdzUmVzcG9uc2USNgoKcGxhY2VtZW50cxgBIAMoCzIiLnNldHRpbmdzLnYxLkVkaXRvckNvbmZpZ1BsYWNlbWVudCIgChJSZXNvbHZlTm90ZVJlcXVlc3QSCgoCaWQYASABKAkiNgoTUmVzb2x2ZU5vdGVSZXNwb25zZRIfCgRub3RlGAEgASgLMhEuc2V0dGluZ3MudjEuTm90ZSIiChRVbnJlc29sdmVOb3RlUmVxdWVzdBIKCgJpZBgBIAEoCSI4ChVVbnJlc29sdmVOb3RlUmVzcG9uc2USHwoEbm90ZRgBIAEoCzIRLnNldHRpbmdzLnYxLk5vdGUixQEKElNlYXJjaE5vdGVzUmVxdWVzdBINCgVxdWVyeRgBIAEoCRIYCgtlbnRpdHlfdHlwZRgCIAEoCUgAiAEBEhIKBWFmdGVyGAMgASgJSAGIAQESEwoGYmVmb3JlGAQgASgJSAKIAQESEgoFZmlyc3QYBSABKAVIA4gBARIRCgRsYXN0GAYgASgFSASIAQFCDgoMX2VudGl0eV90eXBlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCKSAQoTU2VhcmNoTm90ZXNSZXNwb25zZRIgCgVub3RlcxgBIAMoCzIRLnNldHRpbmdzLnYxLk5vdGUSDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIhkKF01hcmtNZW50aW9uc1NlZW5SZXF1ZXN0IikKGE1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRINCgVjb3VudBgBIAEoBSIuCh9HZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXF1ZXN0EgsKA2tleRgBIAEoCSJUCiBHZXRDb250ZXh0RGltZW5zaW9uQnlLZXlSZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIhkKF0dldERlZmF1bHRMb2NhbGVSZXF1ZXN0Ij8KGEdldERlZmF1bHRMb2NhbGVSZXNwb25zZRIjCgZsb2NhbGUYASABKAsyEy5zZXR0aW5ncy52MS5Mb2NhbGUiJgoWR2V0TG9jYWxlQnlDb2RlUmVxdWVzdBIMCgRjb2RlGAEgASgJIj4KF0dldExvY2FsZUJ5Q29kZVJlc3BvbnNlEiMKBmxvY2FsZRgBIAEoCzITLnNldHRpbmdzLnYxLkxvY2FsZSImCiRHZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QiWAolR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRIvCgVlbnRyeRgBIAEoCzIgLnNldHRpbmdzLnYxLlZhcmlhbnRDYXRhbG9nRW50cnkiIwoURGVsZXRlU2V0dGluZ1JlcXVlc3QSCwoDa2V5GAEgASgJIigKFURlbGV0ZVNldHRpbmdSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjMKH0RlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlcXVlc3QSEAoIY2F0ZWdvcnkYASABKAkiMQogRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVzcG9uc2USDQoFY291bnQYASABKAUiTQoWQnVsa1NldFNldHRpbmdzUmVxdWVzdBIzCghzZXR0aW5ncxgBIAMoCzIhLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXF1ZXN0IigKF0J1bGtTZXRTZXR0aW5nc1Jlc3BvbnNlEg0KBWNvdW50GAEgASgFIikKJ0Vuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdCJbCihFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEi8KBWVudHJ5GAEgASgLMiAuc2V0dGluZ3MudjEuVmFyaWFudENhdGFsb2dFbnRyeSLwAwoMRGVzaWduVG9rZW5zEikKCGRvY3VtZW50GAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCghyZXNvbHZlZBgCIAEoCzIhLnNldHRpbmdzLnYxLlJlc29sdmVkRGVzaWduVG9rZW5zEg8KB3ZlcnNpb24YCiABKAUSHgoRcHVibGlzaGVkX3ZlcnNpb24YCyABKAVIAIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI9ChRzY2hlZHVsZWRfcHVibGlzaF9hdBg8IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBARI/ChZzY2hlZHVsZWRfdW5wdWJsaXNoX2F0GD0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBQhQKEl9wdWJsaXNoZWRfdmVyc2lvbkIXChVfc2NoZWR1bGVkX3B1Ymxpc2hfYXRCGQoXX3NjaGVkdWxlZF91bnB1Ymxpc2hfYXQi+gQKFFJlc29sdmVkRGVzaWduVG9rZW5zEi8KBmNvbG9ycxgBIAMoCzIfLnNldHRpbmdzLnYxLlJlc29sdmVkQ29sb3JUb2tlbhI7Cg1mb250X2ZhbWlsaWVzGAIgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SOgoMZm9udF93ZWlnaHRzGAMgAygLMiQuc2V0dGluZ3MudjEuUmVzb2x2ZWRGb250V2VpZ2h0VG9rZW4SNwoKZm9udF9zaXplcxgEIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SNgoMbGluZV9oZWlnaHRzGAUgAygLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWROdW1iZXJUb2tlbhI8Cg9sZXR0ZXJfc3BhY2luZ3MYBiADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjgKCnR5cG9ncmFwaHkYByADKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlUb2tlbhI1CghzcGFjaW5ncxgIIAMoCzIjLnNldHRpbmdzLnYxLlJlc29sdmVkRGltZW5zaW9uVG9rZW4SMgoFcmFkaWkYCSADKAsyIy5zZXR0aW5ncy52MS5SZXNvbHZlZERpbWVuc2lvblRva2VuEjEKB3NoYWRvd3MYCiADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd1Rva2VuEjEKB2JvcmRlcnMYCyADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZEJvcmRlclRva2VuImkKElJlc29sdmVkQ29sb3JUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgV2YWx1ZRgEIAEoCUIOCgxfZGVzY3JpcHRpb24ibgoXUmVzb2x2ZWRGb250RmFtaWx5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESDQoFdmFsdWUYBCADKAlCDgoMX2Rlc2NyaXB0aW9uIm4KF1Jlc29sdmVkRm9udFdlaWdodFRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgFQg4KDF9kZXNjcmlwdGlvbiJtChZSZXNvbHZlZERpbWVuc2lvblRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgJQg4KDF9kZXNjcmlwdGlvbiJqChNSZXNvbHZlZE51bWJlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEg0KBXZhbHVlGAQgASgBQg4KDF9kZXNjcmlwdGlvbiLMAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VG9rZW4SDAoEcGF0aBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESMwoFdmFsdWUYBCABKAsyJC5zZXR0aW5ncy52MS5SZXNvbHZlZFR5cG9ncmFwaHlWYWx1ZRISCgVsYWJlbBgFIAEoCUgBiAEBEhAKA3RhZxgGIAEoCUgCiAEBQg4KDF9kZXNjcmlwdGlvbkIICgZfbGFiZWxCBgoEX3RhZyKNAQoTUmVzb2x2ZWRTaGFkb3dUb2tlbhIMCgRwYXRoGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIwCgZsYXllcnMYBCADKAsyIC5zZXR0aW5ncy52MS5SZXNvbHZlZFNoYWRvd0xheWVyQg4KDF9kZXNjcmlwdGlvbiJ1ChNSZXNvbHZlZFNoYWRvd0xheWVyEhAKCG9mZnNldF94GAEgASgJEhAKCG9mZnNldF95GAIgASgJEgwKBGJsdXIYAyABKAkSDgoGc3ByZWFkGAQgASgJEg0KBWNvbG9yGAUgASgJEg0KBWluc2V0GAYgASgIIowBChNSZXNvbHZlZEJvcmRlclRva2VuEgwKBHBhdGgYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEi8KBXZhbHVlGAQgASgLMiAuc2V0dGluZ3MudjEuUmVzb2x2ZWRCb3JkZXJWYWx1ZUIOCgxfZGVzY3JpcHRpb24iQgoTUmVzb2x2ZWRCb3JkZXJWYWx1ZRINCgVjb2xvchgBIAEoCRINCgV3aWR0aBgCIAEoCRINCgVzdHlsZRgDIAEoCSKbAQoXUmVzb2x2ZWRUeXBvZ3JhcGh5VmFsdWUSEwoLZm9udF9mYW1pbHkYASADKAkSEQoJZm9udF9zaXplGAIgASgJEhMKC2ZvbnRfd2VpZ2h0GAMgASgFEhMKC2xpbmVfaGVpZ2h0GAQgASgBEhYKDmxldHRlcl9zcGFjaW5nGAUgASgJEhYKDnRleHRfdHJhbnNmb3JtGAYgASgJIkQKFkdldERlc2lnblRva2Vuc1JlcXVlc3QSKgoHY2hhbm5lbBgBIAEoDjIZLnB1Ymxpc2gudjEuU2NoZW1hQ2hhbm5lbCJEChdHZXREZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiRgoZVXBkYXRlRGVzaWduVG9rZW5zUmVxdWVzdBIpCghkb2N1bWVudBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRwoaVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USKQoGdG9rZW5zGAEgASgLMhkuc2V0dGluZ3MudjEuRGVzaWduVG9rZW5zIhwKGlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0In4KG1B1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMSNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHgocVW5wdWJsaXNoRGVzaWduVG9rZW5zUmVxdWVzdCJKCh1VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiJQojR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1JlcXVlc3QiUQokR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyKcAQoiU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBIuCgpwdWJsaXNoX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1Cgx1bnB1Ymxpc2hfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQFCDwoNX3VucHVibGlzaF9hdCJQCiNTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRIpCgZ0b2tlbnMYASABKAsyGS5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlbnMiKwopQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlcXVlc3QiVwoqQ2FuY2VsU2NoZWR1bGVkRGVzaWduVG9rZW5zUHVibGlzaFJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucyI3CiFDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1JlcXVlc3QSEgoKdG9rZW5fcGF0aBgBIAEoCSJTCiJDb3VudERlc2lnblRva2VuUmVmZXJlbmNlc1Jlc3BvbnNlEhcKD3BhcmFncmFwaF9jb3VudBgBIAEoBRIUCgxyZWNvcmRfY291bnQYAiABKAUi2QIKEkRlc2lnblRva2VuVmVyc2lvbhIKCgJpZBgBIAEoCRIYChBkZXNpZ25fdG9rZW5zX2lkGAIgASgJEhYKDnZlcnNpb25fbnVtYmVyGAMgASgFEikKCHNuYXBzaG90GAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIUCgxjb250ZW50X2hhc2gYBSABKAkSHgoRc291cmNlX3ZlcnNpb25faWQYBiABKAlIAIgBARIfChJjaGFuZ2VfZGVzY3JpcHRpb24YByABKAlIAYgBARIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIXCgpjcmVhdGVkX2J5GAkgASgJSAKIAQFCFAoSX3NvdXJjZV92ZXJzaW9uX2lkQhUKE19jaGFuZ2VfZGVzY3JpcHRpb25CDQoLX2NyZWF0ZWRfYnkiKgocR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSJRCh1HZXREZXNpZ25Ub2tlblZlcnNpb25SZXNwb25zZRIwCgd2ZXJzaW9uGAEgASgLMh8uc2V0dGluZ3MudjEuRGVzaWduVG9rZW5WZXJzaW9uIpgBCh5MaXN0RGVzaWduVG9rZW5WZXJzaW9uc1JlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QirwEKH0xpc3REZXNpZ25Ub2tlblZlcnNpb25zUmVzcG9uc2USMQoIdmVyc2lvbnMYASADKAsyHy5zZXR0aW5ncy52MS5EZXNpZ25Ub2tlblZlcnNpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm4KIFJlc3RvcmVEZXNpZ25Ub2tlblZlcnNpb25SZXF1ZXN0EhIKCnZlcnNpb25faWQYASABKAkSHwoSY2hhbmdlX2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbiKEAQohUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEikKBnRva2VucxgBIAEoCzIZLnNldHRpbmdzLnYxLkRlc2lnblRva2VucxI0CgtuZXdfdmVyc2lvbhgCIAEoCzIfLnNldHRpbmdzLnYxLkRlc2lnblRva2VuVmVyc2lvbiJFChdHZXRQcm9qZWN0U2NoZW1hUmVxdWVzdBIqCgdjaGFubmVsGAEgASgOMhkucHVibGlzaC52MS5TY2hlbWFDaGFubmVsImUKElByb2plY3RTY2hlbWFNb2RlbBIKCgJpZBgBIAEoCRILCgNrZXkYAiABKAkSDAoEbmFtZRgDIAEoCRITCgtmaWVsZHNfanNvbhgEIAEoCRITCgtjb25maWdfanNvbhgFIAEoCSLCAQodUHJvamVjdFNjaGVtYUNvbnRleHREaW1lbnNpb24SCgoCaWQYASABKAkSCwoDa2V5GAIgASgJEgwKBG5hbWUYAyABKAkSHQoQc291cmNlX21vZGVsX2tleRgEIAEoCUgAiAEBEh8KEmRlZmF1bHRfcmVjb3JkX2tleRgFIAEoCUgBiAEBEg4KBnZhbHVlcxgGIAMoCUITChFfc291cmNlX21vZGVsX2tleUIVChNfZGVmYXVsdF9yZWNvcmRfa2V5Io4BChlQcm9qZWN0U2NoZW1hQXV0aFByb3ZpZGVyEgsKA2tleRgBIAEoCRIMCgRuYW1lGAIgASgJEgwKBHR5cGUYAyABKAkSDwoHZW5hYmxlZBgEIAEoCBIsCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCQoHX2NvbmZpZyKfAwoWUHJvamVjdFNjaGVtYU9wZXJhdGlvbhILCgNrZXkYASABKAkSDAoEbmFtZRgCIAEoCRIQCghlbmRwb2ludBgDIAEoCRISCgp0aW1lb3V0X21zGAQgASgFEjIKDGlucHV0X3NjaGVtYRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARIzCg1vdXRwdXRfc2NoZW1hGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEhYKDnN1cHBvcnRzX2FzeW5jGAcgASgIEgwKBGtpbmQYCCABKAkSHgoRYXR0YWNoZWRfdG9fbW9kZWwYCSABKAlIAogBARIVCg1wYXJlbnRfZmllbGRzGAogAygJEjMKDWNhY2hlX2NvbnRyb2wYCyABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAOIAQFCDwoNX2lucHV0X3NjaGVtYUIQCg5fb3V0cHV0X3NjaGVtYUIUChJfYXR0YWNoZWRfdG9fbW9kZWxCEAoOX2NhY2hlX2NvbnRyb2wiRAoUUHJvamVjdFNjaGVtYVNlZ21lbnQSCwoDa2V5GAEgASgJEgwKBG5hbWUYAiABKAkSEQoJaXNfYWN0aXZlGAMgASgIIm8KGlByb2plY3RTY2hlbWFQcm9maWxlU2NoZW1hEhMKC2ZpZWxkc19qc29uGAEgASgJEhUKDXB1YmxpY19maWVsZHMYAiADKAkSDwoHdmVyc2lvbhgDIAEoBRIUCgxsb29rdXBzX2pzb24YBCABKAkilAQKGEdldFByb2plY3RTY2hlbWFSZXNwb25zZRIvCgZtb2RlbHMYASADKAsyHy5zZXR0aW5ncy52MS5Qcm9qZWN0U2NoZW1hTW9kZWwSPgoKZGltZW5zaW9ucxgCIAMoCzIqLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFDb250ZXh0RGltZW5zaW9uEj4KDmF1dGhfcHJvdmlkZXJzGAMgAygLMiYuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYUF1dGhQcm92aWRlchI3CgpvcGVyYXRpb25zGAQgAygLMiMuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYU9wZXJhdGlvbhIzCghzZWdtZW50cxgFIAMoCzIhLnNldHRpbmdzLnYxLlByb2plY3RTY2hlbWFTZWdtZW50EkQKDnByb2ZpbGVfc2NoZW1hGAcgASgLMicuc2V0dGluZ3MudjEuUHJvamVjdFNjaGVtYVByb2ZpbGVTY2hlbWFIAIgBARImChljdXN0b21lcl9wYXNzd29yZF9lbmFibGVkGAggASgISAGIAQESIQoUY3VzdG9tZXJfb3RwX2VuYWJsZWQYCSABKAhIAogBAUIRCg9fcHJvZmlsZV9zY2hlbWFCHAoaX2N1c3RvbWVyX3Bhc3N3b3JkX2VuYWJsZWRCFwoVX2N1c3RvbWVyX290cF9lbmFibGVkIiwKHlB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVxdWVzdBIKCgJpZBgBIAEoCSKJAQofUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uEjQKEGJyZWFraW5nX2NoYW5nZXMYAiADKAsyGi5wdWJsaXNoLnYxLkJyZWFraW5nQ2hhbmdlIi4KIFVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0EgoKAmlkGAEgASgJIlUKIVVucHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRIwCglkaW1lbnNpb24YASABKAsyHS5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uIjUKJ0dldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzUmVxdWVzdBIKCgJpZBgBIAEoCSJVCihHZXRDb250ZXh0RGltZW5zaW9uUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLiAgoXQ29udGV4dERpbWVuc2lvblZlcnNpb24SCgoCaWQYASABKAkSHAoUY29udGV4dF9kaW1lbnNpb25faWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIvCiFHZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiWwoiR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRI1Cgd2ZXJzaW9uGAEgASgLMiQuc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvblZlcnNpb24iuwEKI0xpc3RDb250ZXh0RGltZW5zaW9uVmVyc2lvbnNSZXF1ZXN0EhwKFGNvbnRleHRfZGltZW5zaW9uX2lkGAEgASgJEhIKBWFmdGVyGAIgASgJSACIAQESEwoGYmVmb3JlGAMgASgJSAGIAQESEgoFZmlyc3QYBCABKAVIAogBARIRCgRsYXN0GAUgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrkBCiRMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USNgoIdmVyc2lvbnMYASADKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8icwolUmVzdG9yZUNvbnRleHREaW1lbnNpb25WZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ilQEKJlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24SOQoLbmV3X3ZlcnNpb24YAiABKAsyJC5zZXR0aW5ncy52MS5Db250ZXh0RGltZW5zaW9uVmVyc2lvbiIdChtQdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QikAEKHFB1Ymxpc2hQcm9maWxlU2NoZW1hUmVzcG9uc2USOgoOcHJvZmlsZV9zY2hlbWEYASABKAsyIi5zZXR0aW5ncy52MS5DdXN0b21lclByb2ZpbGVTY2hlbWESNAoQYnJlYWtpbmdfY2hhbmdlcxgCIAMoCzIaLnB1Ymxpc2gudjEuQnJlYWtpbmdDaGFuZ2UiHwodVW5wdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QiXAoeVW5wdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIiYKJEdldFByb2ZpbGVTY2hlbWFQdWJsaXNoU3RhdHVzUmVxdWVzdCJSCiVHZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEikKBnN0YXR1cxgBIAEoCzIZLnB1Ymxpc2gudjEuUHVibGlzaFN0YXR1cyLcAgoUUHJvZmlsZVNjaGVtYVZlcnNpb24SCgoCaWQYASABKAkSGQoRcHJvZmlsZV9zY2hlbWFfaWQYAiABKAkSFgoOdmVyc2lvbl9udW1iZXIYAyABKAUSKQoIc25hcHNob3QYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EhQKDGNvbnRlbnRfaGFzaBgFIAEoCRIeChFzb3VyY2VfdmVyc2lvbl9pZBgGIAEoCUgAiAEBEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgHIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhcKCmNyZWF0ZWRfYnkYCSABKAlIAogBAUIUChJfc291cmNlX3ZlcnNpb25faWRCFQoTX2NoYW5nZV9kZXNjcmlwdGlvbkINCgtfY3JlYXRlZF9ieSIsCh5HZXRQcm9maWxlU2NoZW1hVmVyc2lvblJlcXVlc3QSCgoCaWQYASABKAkiVQofR2V0UHJvZmlsZVNjaGVtYVZlcnNpb25SZXNwb25zZRIyCgd2ZXJzaW9uGAEgASgLMiEuc2V0dGluZ3MudjEuUHJvZmlsZVNjaGVtYVZlcnNpb24imgEKIExpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0EhIKBWFmdGVyGAEgASgJSACIAQESEwoGYmVmb3JlGAIgASgJSAGIAQESEgoFZmlyc3QYAyABKAVIAogBARIRCgRsYXN0GAQgASgFSAOIAQFCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IrMBCiFMaXN0UHJvZmlsZVNjaGVtYVZlcnNpb25zUmVzcG9uc2USMwoIdmVyc2lvbnMYASADKAsyIS5zZXR0aW5ncy52MS5Qcm9maWxlU2NoZW1hVmVyc2lvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8icAoiUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBISCgp2ZXJzaW9uX2lkGAEgASgJEh8KEmNoYW5nZV9kZXNjcmlwdGlvbhgCIAEoCUgAiAEBQhUKE19jaGFuZ2VfZGVzY3JpcHRpb24ikQEKI1Jlc3RvcmVQcm9maWxlU2NoZW1hVmVyc2lvblJlc3BvbnNlEjIKBnNjaGVtYRgBIAEoCzIiLnNldHRpbmdzLnYxLkN1c3RvbWVyUHJvZmlsZVNjaGVtYRI2CgtuZXdfdmVyc2lvbhgCIAEoCzIhLnNldHRpbmdzLnYxLlByb2ZpbGVTY2hlbWFWZXJzaW9uIh0KG1B1Ymxpc2hQcm9qZWN0U2NoZW1hUmVxdWVzdCL2AQocUHVibGlzaFByb2plY3RTY2hlbWFSZXNwb25zZRIYChBtb2RlbHNfcHVibGlzaGVkGAEgASgFEhwKFG9wZXJhdGlvbnNfcHVibGlzaGVkGAIgASgFEiQKHGNvbnRleHRfZGltZW5zaW9uc19wdWJsaXNoZWQYAyABKAUSIAoYYXV0aF9wcm92aWRlcnNfcHVibGlzaGVkGAQgASgFEiAKGHByb2ZpbGVfc2NoZW1hX3B1Ymxpc2hlZBgFIAEoCBI0ChBicmVha2luZ19jaGFuZ2VzGAYgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSIgCh5HZXRQcm9qZWN0UHVibGlzaFN0YXR1c1JlcXVlc3QigwEKH0dldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USKgoHcGVuZGluZxgBIAMoCzIZLnB1Ymxpc2gudjEuUGVuZGluZ0VudGl0eRI0ChBicmVha2luZ19jaGFuZ2VzGAIgAygLMhoucHVibGlzaC52MS5CcmVha2luZ0NoYW5nZSKsAQomU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlcXVlc3QSCgoCaWQYASABKAkSLgoKcHVibGlzaF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiWwonU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEjAKCWRpbWVuc2lvbhgBIAEoCzIdLnNldHRpbmdzLnYxLkNvbnRleHREaW1lbnNpb24iOwotQ2FuY2VsU2NoZWR1bGVkQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0EgoKAmlkGAEgASgJImIKLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USMAoJZGltZW5zaW9uGAEgASgLMh0uc2V0dGluZ3MudjEuQ29udGV4dERpbWVuc2lvbiKdAQojU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QSLgoKcHVibGlzaF9hdBgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNQoMdW5wdWJsaXNoX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg8KDV91bnB1Ymxpc2hfYXQiYgokU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hIiwKKkNhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoUmVxdWVzdCJpCitDYW5jZWxTY2hlZHVsZWRQcm9maWxlU2NoZW1hUHVibGlzaFJlc3BvbnNlEjoKDnByb2ZpbGVfc2NoZW1hGAEgASgLMiIuc2V0dGluZ3MudjEuQ3VzdG9tZXJQcm9maWxlU2NoZW1hKpcBChFTaGFyZVJlc291cmNlVHlwZRIjCh9TSEFSRV9SRVNPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASHgoaU0hBUkVfUkVTT1VSQ0VfVFlQRV9SRUNPUkQQARIcChhTSEFSRV9SRVNPVVJDRV9UWVBFX0ZJTEUQAhIfChtTSEFSRV9SRVNPVVJDRV9UWVBFX1BST0ZJTEUQAyqFAQoPU2hhcmVQZXJtaXNzaW9uEiAKHFNIQVJFX1BFUk1JU1NJT05fVU5TUEVDSUZJRUQQABIZChVTSEFSRV9QRVJNSVNTSU9OX1ZJRVcQARIZChVTSEFSRV9QRVJNSVNTSU9OX0VESVQQAhIaChZTSEFSRV9QRVJNSVNTSU9OX0FETUlOEAMqewoLU2hhcmVTdGF0dXMSHAoYU0hBUkVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASGAoUU0hBUkVfU1RBVFVTX1BFTkRJTkcQARIZChVTSEFSRV9TVEFUVVNfQUNDRVBURUQQAhIZChVTSEFSRV9TVEFUVVNfREVDTElORUQQAyqtAQodQ3VzdG9tZXJQcm9maWxlTG9va3VwQXVkaWVuY2USMAosQ1VTVE9NRVJfUFJPRklMRV9MT09LVVBfQVVESUVOQ0VfVU5TUEVDSUZJRUQQABItCilDVVNUT01FUl9QUk9GSUxFX0xPT0tVUF9BVURJRU5DRV9PUEVSQVRPUhABEisKJ0NVU1RPTUVSX1BST0ZJTEVfTE9PS1VQX0FVRElFTkNFX1BVQkxJQxACMqFMCg9TZXR0aW5nc1NlcnZpY2USUAoLR2V0U2V0dGluZ3MSHy5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1JlcXVlc3QaIC5zZXR0aW5ncy52MS5HZXRTZXR0aW5nc1Jlc3BvbnNlElYKDVVwZGF0ZVNldHRpbmcSIS5zZXR0aW5ncy52MS5VcGRhdGVTZXR0aW5nUmVxdWVzdBoiLnNldHRpbmdzLnYxLlVwZGF0ZVNldHRpbmdSZXNwb25zZRJWCg1EZWxldGVTZXR0aW5nEiEuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ1JlcXVlc3QaIi5zZXR0aW5ncy52MS5EZWxldGVTZXR0aW5nUmVzcG9uc2USdwoYRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5Eiwuc2V0dGluZ3MudjEuRGVsZXRlU2V0dGluZ3NCeUNhdGVnb3J5UmVxdWVzdBotLnNldHRpbmdzLnYxLkRlbGV0ZVNldHRpbmdzQnlDYXRlZ29yeVJlc3BvbnNlElwKD0J1bGtTZXRTZXR0aW5ncxIjLnNldHRpbmdzLnYxLkJ1bGtTZXRTZXR0aW5nc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5CdWxrU2V0U2V0dGluZ3NSZXNwb25zZRJWCg1MaXN0QXVkaXRMb2dzEiEuc2V0dGluZ3MudjEuTGlzdEF1ZGl0TG9nc1JlcXVlc3QaIi5zZXR0aW5ncy52MS5MaXN0QXVkaXRMb2dzUmVzcG9uc2USTQoKQ3JlYXRlTm90ZRIeLnNldHRpbmdzLnYxLkNyZWF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuQ3JlYXRlTm90ZVJlc3BvbnNlEkQKB0dldE5vdGUSGy5zZXR0aW5ncy52MS5HZXROb3RlUmVxdWVzdBocLnNldHRpbmdzLnYxLkdldE5vdGVSZXNwb25zZRJKCglMaXN0Tm90ZXMSHS5zZXR0aW5ncy52MS5MaXN0Tm90ZXNSZXF1ZXN0Gh4uc2V0dGluZ3MudjEuTGlzdE5vdGVzUmVzcG9uc2USTQoKVXBkYXRlTm90ZRIeLnNldHRpbmdzLnYxLlVwZGF0ZU5vdGVSZXF1ZXN0Gh8uc2V0dGluZ3MudjEuVXBkYXRlTm90ZVJlc3BvbnNlEk0KCkRlbGV0ZU5vdGUSHi5zZXR0aW5ncy52MS5EZWxldGVOb3RlUmVxdWVzdBofLnNldHRpbmdzLnYxLkRlbGV0ZU5vdGVSZXNwb25zZRJQCgtSZXNvbHZlTm90ZRIfLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVxdWVzdBogLnNldHRpbmdzLnYxLlJlc29sdmVOb3RlUmVzcG9uc2USVgoNVW5yZXNvbHZlTm90ZRIhLnNldHRpbmdzLnYxLlVucmVzb2x2ZU5vdGVSZXF1ZXN0GiIuc2V0dGluZ3MudjEuVW5yZXNvbHZlTm90ZVJlc3BvbnNlElAKC1NlYXJjaE5vdGVzEh8uc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXF1ZXN0GiAuc2V0dGluZ3MudjEuU2VhcmNoTm90ZXNSZXNwb25zZRJZCg5MaXN0TXlNZW50aW9ucxIiLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVxdWVzdBojLnNldHRpbmdzLnYxLkxpc3RNeU1lbnRpb25zUmVzcG9uc2USaAoTVXBkYXRlTWVudGlvblN0YXR1cxInLnNldHRpbmdzLnYxLlVwZGF0ZU1lbnRpb25TdGF0dXNSZXF1ZXN0Giguc2V0dGluZ3MudjEuVXBkYXRlTWVudGlvblN0YXR1c1Jlc3BvbnNlEl8KEE1hcmtNZW50aW9uc1NlZW4SJC5zZXR0aW5ncy52MS5NYXJrTWVudGlvbnNTZWVuUmVxdWVzdBolLnNldHRpbmdzLnYxLk1hcmtNZW50aW9uc1NlZW5SZXNwb25zZRJQCgtMaXN0TG9jYWxlcxIfLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVxdWVzdBogLnNldHRpbmdzLnYxLkxpc3RMb2NhbGVzUmVzcG9uc2USSgoJR2V0TG9jYWxlEh0uc2V0dGluZ3MudjEuR2V0TG9jYWxlUmVxdWVzdBoeLnNldHRpbmdzLnYxLkdldExvY2FsZVJlc3BvbnNlEl8KEEdldERlZmF1bHRMb2NhbGUSJC5zZXR0aW5ncy52MS5HZXREZWZhdWx0TG9jYWxlUmVxdWVzdBolLnNldHRpbmdzLnYxLkdldERlZmF1bHRMb2NhbGVSZXNwb25zZRJcCg9HZXRMb2NhbGVCeUNvZGUSIy5zZXR0aW5ncy52MS5HZXRMb2NhbGVCeUNvZGVSZXF1ZXN0GiQuc2V0dGluZ3MudjEuR2V0TG9jYWxlQnlDb2RlUmVzcG9uc2USUwoMQ3JlYXRlTG9jYWxlEiAuc2V0dGluZ3MudjEuQ3JlYXRlTG9jYWxlUmVxdWVzdBohLnNldHRpbmdzLnYxLkNyZWF0ZUxvY2FsZVJlc3BvbnNlElMKDFVwZGF0ZUxvY2FsZRIgLnNldHRpbmdzLnYxLlVwZGF0ZUxvY2FsZVJlcXVlc3QaIS5zZXR0aW5ncy52MS5VcGRhdGVMb2NhbGVSZXNwb25zZRJTCgxEZWxldGVMb2NhbGUSIC5zZXR0aW5ncy52MS5EZWxldGVMb2NhbGVSZXF1ZXN0GiEuc2V0dGluZ3MudjEuRGVsZXRlTG9jYWxlUmVzcG9uc2USYgoRR2V0TmF2UHJlZmVyZW5jZXMSJS5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1JlcXVlc3QaJi5zZXR0aW5ncy52MS5HZXROYXZQcmVmZXJlbmNlc1Jlc3BvbnNlEmsKFFVwZGF0ZU5hdlByZWZlcmVuY2VzEiguc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXF1ZXN0Gikuc2V0dGluZ3MudjEuVXBkYXRlTmF2UHJlZmVyZW5jZXNSZXNwb25zZRJlChJMaXN0UmVjZW50bHlPcGVuZWQSJi5zZXR0aW5ncy52MS5MaXN0UmVjZW50bHlPcGVuZWRSZXF1ZXN0Gicuc2V0dGluZ3MudjEuTGlzdFJlY2VudGx5T3BlbmVkUmVzcG9uc2USaAoTVHJhY2tSZWNlbnRseU9wZW5lZBInLnNldHRpbmdzLnYxLlRyYWNrUmVjZW50bHlPcGVuZWRSZXF1ZXN0Giguc2V0dGluZ3MudjEuVHJhY2tSZWNlbnRseU9wZW5lZFJlc3BvbnNlEmsKFFJlbW92ZVJlY2VudGx5T3BlbmVkEiguc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXF1ZXN0Gikuc2V0dGluZ3MudjEuUmVtb3ZlUmVjZW50bHlPcGVuZWRSZXNwb25zZRJoChNDbGVhclJlY2VudGx5T3BlbmVkEicuc2V0dGluZ3MudjEuQ2xlYXJSZWNlbnRseU9wZW5lZFJlcXVlc3QaKC5zZXR0aW5ncy52MS5DbGVhclJlY2VudGx5T3BlbmVkUmVzcG9uc2USUAoLQ3JlYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5DcmVhdGVTaGFyZVJlc3BvbnNlEkcKCEdldFNoYXJlEhwuc2V0dGluZ3MudjEuR2V0U2hhcmVSZXF1ZXN0Gh0uc2V0dGluZ3MudjEuR2V0U2hhcmVSZXNwb25zZRJNCgpMaXN0U2hhcmVzEh4uc2V0dGluZ3MudjEuTGlzdFNoYXJlc1JlcXVlc3QaHy5zZXR0aW5ncy52MS5MaXN0U2hhcmVzUmVzcG9uc2USUAoLVXBkYXRlU2hhcmUSHy5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlcXVlc3QaIC5zZXR0aW5ncy52MS5VcGRhdGVTaGFyZVJlc3BvbnNlElAKC1Jldm9rZVNoYXJlEh8uc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXF1ZXN0GiAuc2V0dGluZ3MudjEuUmV2b2tlU2hhcmVSZXNwb25zZRJQCgtBY2NlcHRTaGFyZRIfLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVxdWVzdBogLnNldHRpbmdzLnYxLkFjY2VwdFNoYXJlUmVzcG9uc2USUwoMRGVjbGluZVNoYXJlEiAuc2V0dGluZ3MudjEuRGVjbGluZVNoYXJlUmVxdWVzdBohLnNldHRpbmdzLnYxLkRlY2xpbmVTaGFyZVJlc3BvbnNlEm4KFUxpc3RDb250ZXh0RGltZW5zaW9ucxIpLnNldHRpbmdzLnYxLkxpc3RDb250ZXh0RGltZW5zaW9uc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvbnNSZXNwb25zZRJoChNHZXRDb250ZXh0RGltZW5zaW9uEicuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblJlcXVlc3QaKC5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USdwoYR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5Eiwuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvbkJ5S2V5UmVxdWVzdBotLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25CeUtleVJlc3BvbnNlEnEKFkNyZWF0ZUNvbnRleHREaW1lbnNpb24SKi5zZXR0aW5ncy52MS5DcmVhdGVDb250ZXh0RGltZW5zaW9uUmVxdWVzdBorLnNldHRpbmdzLnYxLkNyZWF0ZUNvbnRleHREaW1lbnNpb25SZXNwb25zZRJxChZVcGRhdGVDb250ZXh0RGltZW5zaW9uEiouc2V0dGluZ3MudjEuVXBkYXRlQ29udGV4dERpbWVuc2lvblJlcXVlc3QaKy5zZXR0aW5ncy52MS5VcGRhdGVDb250ZXh0RGltZW5zaW9uUmVzcG9uc2UScQoWRGVsZXRlQ29udGV4dERpbWVuc2lvbhIqLnNldHRpbmdzLnYxLkRlbGV0ZUNvbnRleHREaW1lbnNpb25SZXF1ZXN0Gisuc2V0dGluZ3MudjEuRGVsZXRlQ29udGV4dERpbWVuc2lvblJlc3BvbnNlEnoKGUdldENvbnRleHREaW1lbnNpb25WYWx1ZXMSLS5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmFsdWVzUmVxdWVzdBouLnNldHRpbmdzLnYxLkdldENvbnRleHREaW1lbnNpb25WYWx1ZXNSZXNwb25zZRJ3ChhHZXRDdXN0b21lclByb2ZpbGVTY2hlbWESLC5zZXR0aW5ncy52MS5HZXRDdXN0b21lclByb2ZpbGVTY2hlbWFSZXF1ZXN0Gi0uc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlU2NoZW1hUmVzcG9uc2USZQoSR2V0Q3VzdG9tZXJQcm9maWxlEiYuc2V0dGluZ3MudjEuR2V0Q3VzdG9tZXJQcm9maWxlUmVxdWVzdBonLnNldHRpbmdzLnYxLkdldEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEm4KFUNyZWF0ZUN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkNyZWF0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5DcmVhdGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRJuChVVcGRhdGVDdXN0b21lclByb2ZpbGUSKS5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVSZXF1ZXN0Giouc2V0dGluZ3MudjEuVXBkYXRlQ3VzdG9tZXJQcm9maWxlUmVzcG9uc2USgAEKG1VwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYRIvLnNldHRpbmdzLnYxLlVwZGF0ZUN1c3RvbWVyUHJvZmlsZVNjaGVtYVJlcXVlc3QaMC5zZXR0aW5ncy52MS5VcGRhdGVDdXN0b21lclByb2ZpbGVTY2hlbWFSZXNwb25zZRJxChZTZWFyY2hDdXN0b21lclByb2ZpbGVzEiouc2V0dGluZ3MudjEuU2VhcmNoQ3VzdG9tZXJQcm9maWxlc1JlcXVlc3QaKy5zZXR0aW5ncy52MS5TZWFyY2hDdXN0b21lclByb2ZpbGVzUmVzcG9uc2USbgoVTG9va3VwQ3VzdG9tZXJQcm9maWxlEikuc2V0dGluZ3MudjEuTG9va3VwQ3VzdG9tZXJQcm9maWxlUmVxdWVzdBoqLnNldHRpbmdzLnYxLkxvb2t1cEN1c3RvbWVyUHJvZmlsZVJlc3BvbnNlEm4KFURlbGV0ZUN1c3RvbWVyUHJvZmlsZRIpLnNldHRpbmdzLnYxLkRlbGV0ZUN1c3RvbWVyUHJvZmlsZVJlcXVlc3QaKi5zZXR0aW5ncy52MS5EZWxldGVDdXN0b21lclByb2ZpbGVSZXNwb25zZRJfChBHZXRFZGl0b3JDb25maWdzEiQuc2V0dGluZ3MudjEuR2V0RWRpdG9yQ29uZmlnc1JlcXVlc3QaJS5zZXR0aW5ncy52MS5HZXRFZGl0b3JDb25maWdzUmVzcG9uc2USZQoSTGlzdFZhcmlhbnRDYXRhbG9nEiYuc2V0dGluZ3MudjEuTGlzdFZhcmlhbnRDYXRhbG9nUmVxdWVzdBonLnNldHRpbmdzLnYxLkxpc3RWYXJpYW50Q2F0YWxvZ1Jlc3BvbnNlEnEKFkdldFZhcmlhbnRDYXRhbG9nRW50cnkSKi5zZXR0aW5ncy52MS5HZXRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBorLnNldHRpbmdzLnYxLkdldFZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRJ6ChlDcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5Ei0uc2V0dGluZ3MudjEuQ3JlYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaLi5zZXR0aW5ncy52MS5DcmVhdGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USegoZVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeRItLnNldHRpbmdzLnYxLlVwZGF0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuVXBkYXRlVmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEnoKGURlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnkSLS5zZXR0aW5ncy52MS5EZWxldGVWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBouLnNldHRpbmdzLnYxLkRlbGV0ZVZhcmlhbnRDYXRhbG9nRW50cnlSZXNwb25zZRKGAQodR2V0RGVmYXVsdFZhcmlhbnRDYXRhbG9nRW50cnkSMS5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXREZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeVJlc3BvbnNlEo8BCiBFbnN1cmVEZWZhdWx0VmFyaWFudENhdGFsb2dFbnRyeRI0LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVxdWVzdBo1LnNldHRpbmdzLnYxLkVuc3VyZURlZmF1bHRWYXJpYW50Q2F0YWxvZ0VudHJ5UmVzcG9uc2USXwoQR2V0UHJvamVjdFNjaGVtYRIkLnNldHRpbmdzLnYxLkdldFByb2plY3RTY2hlbWFSZXF1ZXN0GiUuc2V0dGluZ3MudjEuR2V0UHJvamVjdFNjaGVtYVJlc3BvbnNlEnQKF1B1Ymxpc2hDb250ZXh0RGltZW5zaW9uEisuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXF1ZXN0Giwuc2V0dGluZ3MudjEuUHVibGlzaENvbnRleHREaW1lbnNpb25SZXNwb25zZRJ6ChlVbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uEi0uc2V0dGluZ3MudjEuVW5wdWJsaXNoQ29udGV4dERpbWVuc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hDb250ZXh0RGltZW5zaW9uUmVzcG9uc2USjwEKIEdldENvbnRleHREaW1lbnNpb25QdWJsaXNoU3RhdHVzEjQuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXF1ZXN0GjUuc2V0dGluZ3MudjEuR2V0Q29udGV4dERpbWVuc2lvblB1Ymxpc2hTdGF0dXNSZXNwb25zZRKMAQofU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaBIzLnNldHRpbmdzLnYxLlNjaGVkdWxlQ29udGV4dERpbWVuc2lvblB1Ymxpc2hSZXF1ZXN0GjQuc2V0dGluZ3MudjEuU2NoZWR1bGVDb250ZXh0RGltZW5zaW9uUHVibGlzaFJlc3BvbnNlEqEBCiZDYW5jZWxTY2hlZHVsZWRDb250ZXh0RGltZW5zaW9uUHVibGlzaBI6LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVxdWVzdBo7LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZENvbnRleHREaW1lbnNpb25QdWJsaXNoUmVzcG9uc2USfQoaR2V0Q29udGV4dERpbWVuc2lvblZlcnNpb24SLi5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaLy5zZXR0aW5ncy52MS5HZXRDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlc3BvbnNlEoMBChxMaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zEjAuc2V0dGluZ3MudjEuTGlzdENvbnRleHREaW1lbnNpb25WZXJzaW9uc1JlcXVlc3QaMS5zZXR0aW5ncy52MS5MaXN0Q29udGV4dERpbWVuc2lvblZlcnNpb25zUmVzcG9uc2USiQEKHlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvbhIyLnNldHRpbmdzLnYxLlJlc3RvcmVDb250ZXh0RGltZW5zaW9uVmVyc2lvblJlcXVlc3QaMy5zZXR0aW5ncy52MS5SZXN0b3JlQ29udGV4dERpbWVuc2lvblZlcnNpb25SZXNwb25zZRJ0ChdHZXRQcm9maWxlU2NoZW1hVmVyc2lvbhIrLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USegoZTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9ucxItLnNldHRpbmdzLnYxLkxpc3RQcm9maWxlU2NoZW1hVmVyc2lvbnNSZXF1ZXN0Gi4uc2V0dGluZ3MudjEuTGlzdFByb2ZpbGVTY2hlbWFWZXJzaW9uc1Jlc3BvbnNlEoABChtSZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb24SLy5zZXR0aW5ncy52MS5SZXN0b3JlUHJvZmlsZVNjaGVtYVZlcnNpb25SZXF1ZXN0GjAuc2V0dGluZ3MudjEuUmVzdG9yZVByb2ZpbGVTY2hlbWFWZXJzaW9uUmVzcG9uc2USawoUUHVibGlzaFByb2ZpbGVTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvZmlsZVNjaGVtYVJlc3BvbnNlEnEKFlVucHVibGlzaFByb2ZpbGVTY2hlbWESKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hQcm9maWxlU2NoZW1hUmVxdWVzdBorLnNldHRpbmdzLnYxLlVucHVibGlzaFByb2ZpbGVTY2hlbWFSZXNwb25zZRKGAQodR2V0UHJvZmlsZVNjaGVtYVB1Ymxpc2hTdGF0dXMSMS5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1JlcXVlc3QaMi5zZXR0aW5ncy52MS5HZXRQcm9maWxlU2NoZW1hUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoMBChxTY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoEjAuc2V0dGluZ3MudjEuU2NoZWR1bGVQcm9maWxlU2NoZW1hUHVibGlzaFJlcXVlc3QaMS5zZXR0aW5ncy52MS5TY2hlZHVsZVByb2ZpbGVTY2hlbWFQdWJsaXNoUmVzcG9uc2USmAEKI0NhbmNlbFNjaGVkdWxlZFByb2ZpbGVTY2hlbWFQdWJsaXNoEjcuc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXF1ZXN0Gjguc2V0dGluZ3MudjEuQ2FuY2VsU2NoZWR1bGVkUHJvZmlsZVNjaGVtYVB1Ymxpc2hSZXNwb25zZRJ0ChdHZXRQcm9qZWN0UHVibGlzaFN0YXR1cxIrLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVxdWVzdBosLnNldHRpbmdzLnYxLkdldFByb2plY3RQdWJsaXNoU3RhdHVzUmVzcG9uc2USawoUUHVibGlzaFByb2plY3RTY2hlbWESKC5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlcXVlc3QaKS5zZXR0aW5ncy52MS5QdWJsaXNoUHJvamVjdFNjaGVtYVJlc3BvbnNlElwKD0dldERlc2lnblRva2VucxIjLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1JlcXVlc3QaJC5zZXR0aW5ncy52MS5HZXREZXNpZ25Ub2tlbnNSZXNwb25zZRJlChJVcGRhdGVEZXNpZ25Ub2tlbnMSJi5zZXR0aW5ncy52MS5VcGRhdGVEZXNpZ25Ub2tlbnNSZXF1ZXN0Gicuc2V0dGluZ3MudjEuVXBkYXRlRGVzaWduVG9rZW5zUmVzcG9uc2USaAoTUHVibGlzaERlc2lnblRva2VucxInLnNldHRpbmdzLnYxLlB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXF1ZXN0Giguc2V0dGluZ3MudjEuUHVibGlzaERlc2lnblRva2Vuc1Jlc3BvbnNlEm4KFVVucHVibGlzaERlc2lnblRva2VucxIpLnNldHRpbmdzLnYxLlVucHVibGlzaERlc2lnblRva2Vuc1JlcXVlc3QaKi5zZXR0aW5ncy52MS5VbnB1Ymxpc2hEZXNpZ25Ub2tlbnNSZXNwb25zZRKDAQocR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1cxIwLnNldHRpbmdzLnYxLkdldERlc2lnblRva2Vuc1B1Ymxpc2hTdGF0dXNSZXF1ZXN0GjEuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5zUHVibGlzaFN0YXR1c1Jlc3BvbnNlEoABChtTY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2gSLy5zZXR0aW5ncy52MS5TY2hlZHVsZURlc2lnblRva2Vuc1B1Ymxpc2hSZXF1ZXN0GjAuc2V0dGluZ3MudjEuU2NoZWR1bGVEZXNpZ25Ub2tlbnNQdWJsaXNoUmVzcG9uc2USlQEKIkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2gSNi5zZXR0aW5ncy52MS5DYW5jZWxTY2hlZHVsZWREZXNpZ25Ub2tlbnNQdWJsaXNoUmVxdWVzdBo3LnNldHRpbmdzLnYxLkNhbmNlbFNjaGVkdWxlZERlc2lnblRva2Vuc1B1Ymxpc2hSZXNwb25zZRJ9ChpDb3VudERlc2lnblRva2VuUmVmZXJlbmNlcxIuLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVxdWVzdBovLnNldHRpbmdzLnYxLkNvdW50RGVzaWduVG9rZW5SZWZlcmVuY2VzUmVzcG9uc2USbgoVR2V0RGVzaWduVG9rZW5WZXJzaW9uEikuc2V0dGluZ3MudjEuR2V0RGVzaWduVG9rZW5WZXJzaW9uUmVxdWVzdBoqLnNldHRpbmdzLnYxLkdldERlc2lnblRva2VuVmVyc2lvblJlc3BvbnNlEnQKF0xpc3REZXNpZ25Ub2tlblZlcnNpb25zEisuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXF1ZXN0Giwuc2V0dGluZ3MudjEuTGlzdERlc2lnblRva2VuVmVyc2lvbnNSZXNwb25zZRJ6ChlSZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uEi0uc2V0dGluZ3MudjEuUmVzdG9yZURlc2lnblRva2VuVmVyc2lvblJlcXVlc3QaLi5zZXR0aW5ncy52MS5SZXN0b3JlRGVzaWduVG9rZW5WZXJzaW9uUmVzcG9uc2VCPVo7Z2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL3NldHRpbmdzL3YxO3NldHRpbmdzdjFiBnByb3RvMw", [file_google_protobuf_struct6, file_google_protobuf_timestamp7, file_expressions_v1_expressions, file_publish_v1_publish, file_common_v1_pagination, file_common_v1_access]);
726
755
  var SettingSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 0);
727
756
  var NoteSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 2);
728
757
  var GetSettingsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 4);
@@ -752,7 +781,6 @@ var CreateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_set
752
781
  var UpdateContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 74);
753
782
  var DeleteContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 76);
754
783
  var GetContextDimensionValuesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 78);
755
- var CustomerProfileFieldSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 80);
756
784
  var CustomerProfileSchemaSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 82);
757
785
  var GetCustomerProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 83);
758
786
  var VariantCatalogEntrySchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 85);
@@ -765,17 +793,39 @@ var GetCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_setting
765
793
  var CreateCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 98);
766
794
  var UpdateCustomerProfileRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 100);
767
795
  var UpdateCustomerProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 102);
768
- var GetCustomerResolutionAttributesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 112);
769
- var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 116);
770
- var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 129);
771
- var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 131);
772
- var DeleteSettingRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 135);
773
- var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 156);
774
- var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 158);
775
- var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 160);
776
- var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 162);
777
- var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 164);
778
- var PublishProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 200);
796
+ var GetEditorConfigsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 112);
797
+ var GetDefaultLocaleRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 125);
798
+ var GetLocaleByCodeRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 127);
799
+ var DeleteSettingRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 131);
800
+ var GetDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 152);
801
+ var UpdateDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 154);
802
+ var PublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 156);
803
+ var UnpublishDesignTokensRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 158);
804
+ var GetDesignTokensPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 160);
805
+ var ScheduleDesignTokensPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 162);
806
+ var CancelScheduledDesignTokensPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 164);
807
+ var CountDesignTokenReferencesRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 166);
808
+ var GetDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 169);
809
+ var ListDesignTokenVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 171);
810
+ var RestoreDesignTokenVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 173);
811
+ var PublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 183);
812
+ var UnpublishContextDimensionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 185);
813
+ var GetContextDimensionPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 187);
814
+ var GetContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 190);
815
+ var ListContextDimensionVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 192);
816
+ var RestoreContextDimensionVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 194);
817
+ var PublishProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 196);
818
+ var UnpublishProfileSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 198);
819
+ var GetProfileSchemaPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 200);
820
+ var GetProfileSchemaVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 203);
821
+ var ListProfileSchemaVersionsRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 205);
822
+ var RestoreProfileSchemaVersionRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 207);
823
+ var PublishProjectSchemaRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 209);
824
+ var GetProjectPublishStatusRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 211);
825
+ var ScheduleContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 213);
826
+ var CancelScheduledContextDimensionPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 215);
827
+ var ScheduleProfileSchemaPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 217);
828
+ var CancelScheduledProfileSchemaPublishRequestSchema = /* @__PURE__ */ messageDesc11(file_settings_v1_settings, 219);
779
829
  var CustomerProfileLookupAudienceSchema = /* @__PURE__ */ enumDesc7(file_settings_v1_settings, 3);
780
830
  var CustomerProfileLookupAudience = /* @__PURE__ */ tsEnum7(CustomerProfileLookupAudienceSchema);
781
831
  var SettingsService = /* @__PURE__ */ serviceDesc7(file_settings_v1_settings, 0);
@@ -796,9 +846,11 @@ var UpdateFileMetadataRequestSchema = /* @__PURE__ */ messageDesc12(file_storage
796
846
  var DeleteFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 16);
797
847
  var PermanentlyDeleteFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 18);
798
848
  var RestoreFileRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 20);
849
+ var EmptyTrashRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 22);
799
850
  var TrackFileUsageRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 24);
800
851
  var RemoveFileUsageRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 26);
801
852
  var CleanupOrphanedFilesRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 28);
853
+ var RetryFileGenerationRequestSchema = /* @__PURE__ */ messageDesc12(file_storage_v1_storage, 30);
802
854
  var StorageService = /* @__PURE__ */ serviceDesc8(file_storage_v1_storage, 0);
803
855
 
804
856
  // ../../packages/proto-ts/src/operations/v1/operations_pb.js
@@ -808,19 +860,40 @@ var file_operations_v1_operations = /* @__PURE__ */ fileDesc13("Ch5vcGVyYXRpb25z
808
860
  var OperationSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 2);
809
861
  var OperationExecutionSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 4);
810
862
  var DeadLetterEntrySchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 5);
811
- var ListOperationsRequestSchema2 = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 9);
863
+ var ListOperationsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 9);
812
864
  var GetOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 11);
813
865
  var CreateOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 13);
814
866
  var UpdateOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 15);
815
867
  var DeleteOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 17);
816
868
  var ExecuteOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 19);
869
+ var ListOperationExecutionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 27);
870
+ var GetOperationExecutionStatsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 29);
817
871
  var ListDeadLetterEntriesRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 31);
818
872
  var RetryDeadLetterEntryRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 33);
819
873
  var DismissDeadLetterEntryRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 35);
874
+ var BulkDismissDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 37);
875
+ var DismissAllPendingDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 39);
876
+ var BulkRetryDeadLettersRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 41);
877
+ var ListDeadLetterOperationKeysRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 43);
878
+ var GetDeadLetterStatsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 45);
879
+ var ListCircuitStatesRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 47);
880
+ var ResetCircuitRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 49);
820
881
  var GetSigningSecretRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 51);
882
+ var RegenerateSigningSecretRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 53);
883
+ var CancelOperationExecutionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 59);
884
+ var CancelOperationExecutionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 61);
885
+ var GetOperationVersionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 74);
886
+ var ListOperationVersionsRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 76);
887
+ var RestoreOperationVersionRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 78);
821
888
  var PublishOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 80);
889
+ var UnpublishOperationRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 82);
890
+ var GetOperationPublishStatusRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 84);
891
+ var ScheduleOperationPublishRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 86);
892
+ var CancelScheduledOperationPublishRequestSchema = /* @__PURE__ */ messageDesc13(file_operations_v1_operations, 88);
822
893
  var OperationKindSchema = /* @__PURE__ */ enumDesc9(file_operations_v1_operations, 0);
823
894
  var OperationKind = /* @__PURE__ */ tsEnum9(OperationKindSchema);
895
+ var ExecutionModeSchema = /* @__PURE__ */ enumDesc9(file_operations_v1_operations, 1);
896
+ var ExecutionMode = /* @__PURE__ */ tsEnum9(ExecutionModeSchema);
824
897
  var OperationsService = /* @__PURE__ */ serviceDesc9(file_operations_v1_operations, 0);
825
898
 
826
899
  // ../../packages/proto-ts/src/hooks/v1/hooks_pb.js
@@ -843,18 +916,26 @@ var HooksService = /* @__PURE__ */ serviceDesc10(file_hooks_v1_hooks, 0);
843
916
  // ../../packages/proto-ts/src/notifications/v1/notifications_pb.js
844
917
  import { enumDesc as enumDesc10, fileDesc as fileDesc15, messageDesc as messageDesc15, serviceDesc as serviceDesc11, tsEnum as tsEnum10 } from "@bufbuild/protobuf/codegenv2";
845
918
  import { file_google_protobuf_struct as file_google_protobuf_struct10, file_google_protobuf_timestamp as file_google_protobuf_timestamp11 } from "@bufbuild/protobuf/wkt";
846
- var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc15("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IskBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIrABChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGUiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKXAwoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0ItEBCiBMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QivQEKIUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRI9Cg1ub3RpZmljYXRpb25zGAEgAygLMiYubm90aWZpY2F0aW9ucy52MS5DdXN0b21lck5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIrCglwYWdlX2luZm8YAyABKAsyEy5jb21tb24udjEuUGFnZUluZm9IAIgBARIPCgdjdXJzb3JzGAQgAygJQgwKCl9wYWdlX2luZm8izwQKH1NlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QSEwoLY3VzdG9tZXJfaWQYASABKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWRlZXBfbGluaxgKIAEoCUgEiAEBEhIKBWJhZGdlGAsgASgFSAWIAQESFgoJdGhyZWFkX2lkGAwgASgJSAaIAQESLwoJcHVzaF9kYXRhGA0gASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgHiAEBEhoKDWVtYWlsX3N1YmplY3QYFCABKAlICIgBARIXCgplbWFpbF9ib2R5GBUgASgJSAmIAQESGwoOZW1haWxfcmVwbHlfdG8YFiABKAlICogBARIuCgplbWFpbF9jdGFzGBcgAygLMhoubm90aWZpY2F0aW9ucy52MS5FbWFpbEN0YUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9kZWVwX2xpbmtCCAoGX2JhZGdlQgwKCl90aHJlYWRfaWRCDAoKX3B1c2hfZGF0YUIQCg5fZW1haWxfc3ViamVjdEINCgtfZW1haWxfYm9keUIRCg9fZW1haWxfcmVwbHlfdG8iJgoIRW1haWxDdGESDQoFbGFiZWwYASABKAkSCwoDdXJsGAIgASgJImAKIFNlbmRDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEjwKDG5vdGlmaWNhdGlvbhgBIAEoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24iuAEKI1NlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhQKDGN1c3RvbWVyX2lkcxgBIAMoCRINCgV0aXRsZRgCIAEoCRIUCgdtZXNzYWdlGAMgASgJSACIAQESFQoIY2F0ZWdvcnkYBCABKAlIAYgBARIXCgphY3Rpb25fdXJsGAUgASgJSAKIAQFCCgoIX21lc3NhZ2VCCwoJX2NhdGVnb3J5Qg0KC19hY3Rpb25fdXJsIjUKJFNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRINCgVjb3VudBgBIAEoBSIxCiNNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSI3CiRNYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJTCidNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QSGAoLY3VzdG9tZXJfaWQYASABKAlIAIgBAUIOCgxfY3VzdG9tZXJfaWQiOQooTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRINCgVjb3VudBgBIAEoBSLQAQofTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVxdWVzdBIrCgV3aGVyZRgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAIgBARISCgVhZnRlchgCIAEoCUgBiAEBEhMKBmJlZm9yZRgDIAEoCUgCiAEBEhIKBWZpcnN0GAQgASgFSAOIAQESEQoEbGFzdBgFIAEoBUgEiAEBQggKBl93aGVyZUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QivAEKIExpc3RQcm9qZWN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEj0KDW5vdGlmaWNhdGlvbnMYASADKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyJvChZOb3RpZmljYXRpb25QcmVmZXJlbmNlEhAKCGNhdGVnb3J5GAEgASgJEhUKDWVtYWlsX2VuYWJsZWQYAiABKAgSFAoMcHVzaF9lbmFibGVkGAMgASgIEhYKDmluX2FwcF9lbmFibGVkGAQgASgIIjgKIUdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCSJjCiJHZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1Jlc3BvbnNlEj0KC3ByZWZlcmVuY2VzGAEgAygLMigubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlItYBCiNVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRIQCghjYXRlZ29yeRgCIAEoCRIaCg1lbWFpbF9lbmFibGVkGAMgASgISACIAQESGQoMcHVzaF9lbmFibGVkGAQgASgISAGIAQESGwoOaW5fYXBwX2VuYWJsZWQYBSABKAhIAogBAUIQCg5fZW1haWxfZW5hYmxlZEIPCg1fcHVzaF9lbmFibGVkQhEKD19pbl9hcHBfZW5hYmxlZCI3CiRVcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJ8ChpSZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBITCgtjdXN0b21lcl9pZBgBIAEoCRINCgV0b2tlbhgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIYCgtkZXZpY2VfbmFtZRgEIAEoCUgAiAEBQg4KDF9kZXZpY2VfbmFtZSIuChtSZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCItChxVbnJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0Eg0KBXRva2VuGAEgASgJIjAKHVVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiyAMKDlB1c2hDcmVkZW50aWFsEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIcGxhdGZvcm0YAyABKAkSFgoJYnVuZGxlX2lkGAogASgJSACIAQESGQoMYXBuc190ZWFtX2lkGAsgASgJSAGIAQESGAoLYXBuc19rZXlfaWQYDCABKAlIAogBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDSABKAhIA4gBARIbCg5mY21fcHJvamVjdF9pZBgUIAEoCUgEiAEBEh0KEGZjbV9jbGllbnRfZW1haWwYFSABKAlIBYgBARISCgpoYXNfc2VjcmV0GB4gASgIEi4KCmNyZWF0ZWRfYXQYMiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYMyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgwKCl9idW5kbGVfaWRCDwoNX2FwbnNfdGVhbV9pZEIOCgxfYXBuc19rZXlfaWRCEgoQX2FwbnNfcHJvZHVjdGlvbkIRCg9fZmNtX3Byb2plY3RfaWRCEwoRX2ZjbV9jbGllbnRfZW1haWwi3wIKG1VwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhAKCHBsYXRmb3JtGAIgASgJEhgKC2FwbnNfcDhfa2V5GAogASgJSACIAQESFgoJYnVuZGxlX2lkGAsgASgJSAGIAQESGQoMYXBuc190ZWFtX2lkGAwgASgJSAKIAQESGAoLYXBuc19rZXlfaWQYDSABKAlIA4gBARIcCg9hcG5zX3Byb2R1Y3Rpb24YDiABKAhIBIgBARIlChhmY21fc2VydmljZV9hY2NvdW50X2pzb24YFCABKAlIBYgBAUIOCgxfYXBuc19wOF9rZXlCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhsKGV9mY21fc2VydmljZV9hY2NvdW50X2pzb24iVAocVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRI0CgpjcmVkZW50aWFsGAEgASgLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIwChpMaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIlQKG0xpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRI1CgtjcmVkZW50aWFscxgBIAMoCzIgLm5vdGlmaWNhdGlvbnMudjEuUHVzaENyZWRlbnRpYWwiKQobRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0EgoKAmlkGAEgASgJIi8KHERlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCrIAgoQTm90aWZpY2F0aW9uVHlwZRIhCh1OT1RJRklDQVRJT05fVFlQRV9VTlNQRUNJRklFRBAAEiMKH05PVElGSUNBVElPTl9UWVBFX0pPQl9DT01QTEVURUQQARIgChxOT1RJRklDQVRJT05fVFlQRV9KT0JfRkFJTEVEEAISIgoeTk9USUZJQ0FUSU9OX1RZUEVfSk9CX1BST0dSRVNTEAMSHQoZTk9USUZJQ0FUSU9OX1RZUEVfTUVOVElPThAEEiAKHE5PVElGSUNBVElPTl9UWVBFX05PVEVfUkVQTFkQBRIjCh9OT1RJRklDQVRJT05fVFlQRV9OT1RFX1JFU09MVkVEEAYSHAoYTk9USUZJQ0FUSU9OX1RZUEVfU1lTVEVNEAcSIgoeTk9USUZJQ0FUSU9OX1RZUEVfQU5OT1VOQ0VNRU5UEAgq9QEKFk5vdGlmaWNhdGlvblNvdXJjZVR5cGUSKAokTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1JFQ09SRBABEiIKHk5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9NT0RFTBACEiEKHU5PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9OT1RFEAMSIAocTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX0pPQhAEEiMKH05PVElGSUNBVElPTl9TT1VSQ0VfVFlQRV9TWVNURU0QBTL1EwoUTm90aWZpY2F0aW9uc1NlcnZpY2USbAoRTGlzdE5vdGlmaWNhdGlvbnMSKi5ub3RpZmljYXRpb25zLnYxLkxpc3ROb3RpZmljYXRpb25zUmVxdWVzdBorLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXNwb25zZRJjCg5HZXRVbnJlYWRDb3VudBInLm5vdGlmaWNhdGlvbnMudjEuR2V0VW5yZWFkQ291bnRSZXF1ZXN0Gigubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlc3BvbnNlEnUKFE1hcmtOb3RpZmljYXRpb25SZWFkEi0ubm90aWZpY2F0aW9ucy52MS5NYXJrTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USgQEKGE1hcmtBbGxOb3RpZmljYXRpb25zUmVhZBIxLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USbwoSRGVsZXRlTm90aWZpY2F0aW9uEisubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXF1ZXN0Giwubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRJpChBTZW5kQW5ub3VuY2VtZW50Eikubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVxdWVzdBoqLm5vdGlmaWNhdGlvbnMudjEuU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEn4KF0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5EjAubm90aWZpY2F0aW9ucy52MS5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QaMS5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2UShAEKGUxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnMSMi5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXF1ZXN0GjMubm90aWZpY2F0aW9ucy52MS5MaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USgQEKGFNlbmRDdXN0b21lck5vdGlmaWNhdGlvbhIxLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHFNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb24SNS5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5TZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVzcG9uc2USjQEKHE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWQSNS5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5NYXJrQ3VzdG9tZXJOb3RpZmljYXRpb25SZWFkUmVzcG9uc2USmQEKIE1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkEjkubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlcXVlc3QaOi5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USgQEKGExpc3RQcm9qZWN0Tm90aWZpY2F0aW9ucxIxLm5vdGlmaWNhdGlvbnMudjEuTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVxdWVzdBoyLm5vdGlmaWNhdGlvbnMudjEuTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVzcG9uc2UShwEKGkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzEjMubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25QcmVmZXJlbmNlc1JlcXVlc3QaNC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USjQEKHFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2USNS5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0GjYubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25QcmVmZXJlbmNlUmVzcG9uc2UScgoTUmVnaXN0ZXJEZXZpY2VUb2tlbhIsLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRJ4ChVVbnJlZ2lzdGVyRGV2aWNlVG9rZW4SLi5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QaLy5ub3RpZmljYXRpb25zLnYxLlVucmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEnUKFFVwbG9hZFB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5VcGxvYWRQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVzcG9uc2UScgoTTGlzdFB1c2hDcmVkZW50aWFscxIsLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1JlcXVlc3QaLS5ub3RpZmljYXRpb25zLnYxLkxpc3RQdXNoQ3JlZGVudGlhbHNSZXNwb25zZRJ1ChREZWxldGVQdXNoQ3JlZGVudGlhbBItLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlUHVzaENyZWRlbnRpYWxSZXF1ZXN0Gi4ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlc3BvbnNlQkdaRWdpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9ub3RpZmljYXRpb25zL3YxO25vdGlmaWNhdGlvbnN2MWIGcHJvdG8z", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
919
+ var file_notifications_v1_notifications = /* @__PURE__ */ fileDesc15("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEisAUKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIPCgd1c2VyX2lkGAIgASgJEjAKBHR5cGUYAyABKA4yIi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblR5cGUSDQoFdGl0bGUYBCABKAkSFAoHbWVzc2FnZRgFIAEoCUgAiAEBEjIKDHJpY2hfY29udGVudBgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAYgBARJCCgtzb3VyY2VfdHlwZRgKIAEoDjIoLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU291cmNlVHlwZUgCiAEBEhYKCXNvdXJjZV9pZBgLIAEoCUgDiAEBEhcKCmFjdGlvbl91cmwYDCABKAlIBIgBARIuCghtZXRhZGF0YRgNIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBYgBARIPCgdpc19yZWFkGBQgASgIEjAKB3JlYWRfYXQYFSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAaIAQESEQoJdGVuYW50X2lkGB4gASgJEhcKCnByb2plY3RfaWQYHyABKAlIB4gBARIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBQgoKCF9tZXNzYWdlQg8KDV9yaWNoX2NvbnRlbnRCDgoMX3NvdXJjZV90eXBlQgwKCl9zb3VyY2VfaWRCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgoKCF9yZWFkX2F0Qg0KC19wcm9qZWN0X2lkQg0KC19leHBpcmVzX2F0IskBChhMaXN0Tm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0IsMBChlMaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBRIUCgx1bnJlYWRfY291bnQYAyABKAUSKwoJcGFnZV9pbmZvGAQgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgFIAMoCUIMCgpfcGFnZV9pbmZvIikKG01hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBIKCgJpZBgBIAEoCSIvChxNYXJrTm90aWZpY2F0aW9uUmVhZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiYQofTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBI1CgR0eXBlGAEgASgOMiIubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UeXBlSACIAQFCBwoFX3R5cGUiMQogTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkUmVzcG9uc2USDQoFY291bnQYASABKAUiJwoZRGVsZXRlTm90aWZpY2F0aW9uUmVxdWVzdBIKCgJpZBgBIAEoCSItChpEZWxldGVOb3RpZmljYXRpb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIhcKFUdldFVucmVhZENvdW50UmVxdWVzdCInChZHZXRVbnJlYWRDb3VudFJlc3BvbnNlEg0KBWNvdW50GAEgASgFIrABChdTZW5kQW5ub3VuY2VtZW50UmVxdWVzdBINCgV0aXRsZRgBIAEoCRIUCgdtZXNzYWdlGAIgASgJSACIAQESFwoKYWN0aW9uX3VybBgDIAEoCUgBiAEBEhgKC3RhcmdldF90eXBlGAQgASgJSAKIAQESEgoKdGFyZ2V0X2lkcxgFIAMoCUIKCghfbWVzc2FnZUINCgtfYWN0aW9uX3VybEIOCgxfdGFyZ2V0X3R5cGUiUAoYU2VuZEFubm91bmNlbWVudFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIpgBCh5MaXN0QW5ub3VuY2VtZW50SGlzdG9yeVJlcXVlc3QSEgoFYWZ0ZXIYASABKAlIAIgBARITCgZiZWZvcmUYAiABKAlIAYgBARISCgVmaXJzdBgDIAEoBUgCiAEBEhEKBGxhc3QYBCABKAVIA4gBAUIICgZfYWZ0ZXJCCQoHX2JlZm9yZUIICgZfZmlyc3RCBwoFX2xhc3QiswEKH0xpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVzcG9uc2USNQoNYW5ub3VuY2VtZW50cxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEg0KBXRvdGFsGAIgASgFEisKCXBhZ2VfaW5mbxgDIAEoCzITLmNvbW1vbi52MS5QYWdlSW5mb0gAiAEBEg8KB2N1cnNvcnMYBCADKAlCDAoKX3BhZ2VfaW5mbyKBBAoUQ3VzdG9tZXJOb3RpZmljYXRpb24SCgoCaWQYASABKAkSEwoLY3VzdG9tZXJfaWQYAiABKAkSDQoFdGl0bGUYAyABKAkSFAoHbWVzc2FnZRgEIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAUgASgJSAGIAQESFwoKYWN0aW9uX3VybBgGIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEg8KB2lzX3JlYWQYCCABKAgSMAoHcmVhZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIWCglpbWFnZV91cmwYCiABKAlIBYgBARIRCgl0ZW5hbnRfaWQYFCABKAkSEgoKcHJvamVjdF9pZBgVIAEoCRIuCgpjcmVhdGVkX2F0GDIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgpleHBpcmVzX2F0GDMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgGiAEBQgoKCF9tZXNzYWdlQgsKCV9jYXRlZ29yeUINCgtfYWN0aW9uX3VybEILCglfbWV0YWRhdGFCCgoIX3JlYWRfYXRCDAoKX2ltYWdlX3VybEINCgtfZXhwaXJlc19hdCLRAQogTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QSKwoFd2hlcmUYASABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQESEgoFYWZ0ZXIYAiABKAlIAYgBARITCgZiZWZvcmUYAyABKAlIAogBARISCgVmaXJzdBgEIAEoBUgDiAEBEhEKBGxhc3QYBSABKAVIBIgBAUIICgZfd2hlcmVCCAoGX2FmdGVyQgkKB19iZWZvcmVCCAoGX2ZpcnN0QgcKBV9sYXN0Ir0BCiFMaXN0Q3VzdG9tZXJOb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIoYFCh9TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEhQKB21lc3NhZ2UYAyABKAlIAIgBARIVCghjYXRlZ29yeRgEIAEoCUgBiAEBEhcKCmFjdGlvbl91cmwYBSABKAlIAogBARIuCghtZXRhZGF0YRgGIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIA4gBARIWCglpbWFnZV91cmwYByABKAlIBIgBARIzCgpleHBpcmVzX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBElEKCGNoYW5uZWxzGAkgAygLMj8ubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXRKBAgKEAtKBAgLEAxKBAgMEA1KBAgNEA5KBAgUEBVKBAgVEBZKBAgWEBdKBAgXEBhSCWRlZXBfbGlua1IFYmFkZ2VSCXRocmVhZF9pZFIJcHVzaF9kYXRhUg1lbWFpbF9zdWJqZWN0UgplbWFpbF9ib2R5Ug5lbWFpbF9yZXBseV90b1IKZW1haWxfY3RhcyJgCiBTZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRI8Cgxub3RpZmljYXRpb24YASABKAsyJi5ub3RpZmljYXRpb25zLnYxLkN1c3RvbWVyTm90aWZpY2F0aW9uIoAECiNTZW5kQnVsa0N1c3RvbWVyTm90aWZpY2F0aW9uUmVxdWVzdBIUCgxjdXN0b21lcl9pZHMYASADKAkSDQoFdGl0bGUYAiABKAkSFAoHbWVzc2FnZRgDIAEoCUgAiAEBEhUKCGNhdGVnb3J5GAQgASgJSAGIAQESFwoKYWN0aW9uX3VybBgFIAEoCUgCiAEBEi4KCG1ldGFkYXRhGAYgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgDiAEBEhYKCWltYWdlX3VybBgHIAEoCUgEiAEBEjMKCmV4cGlyZXNfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAWIAQESVQoIY2hhbm5lbHMYCSADKAsyQy5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0LkNoYW5uZWxzRW50cnkaSAoNQ2hhbm5lbHNFbnRyeRILCgNrZXkYASABKAkSJgoFdmFsdWUYAiABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0OgI4AUIKCghfbWVzc2FnZUILCglfY2F0ZWdvcnlCDQoLX2FjdGlvbl91cmxCCwoJX21ldGFkYXRhQgwKCl9pbWFnZV91cmxCDQoLX2V4cGlyZXNfYXQiNQokU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlc3BvbnNlEg0KBWNvdW50GAEgASgFIjEKI01hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXF1ZXN0EgoKAmlkGAEgASgJIjcKJE1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlMKJ01hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBIYCgtjdXN0b21lcl9pZBgBIAEoCUgAiAEBQg4KDF9jdXN0b21lcl9pZCI5CihNYXJrQWxsQ3VzdG9tZXJOb3RpZmljYXRpb25zUmVhZFJlc3BvbnNlEg0KBWNvdW50GAEgASgFItABCh9MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXF1ZXN0EisKBXdoZXJlGAEgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEhIKBWFmdGVyGAIgASgJSAGIAQESEwoGYmVmb3JlGAMgASgJSAKIAQESEgoFZmlyc3QYBCABKAVIA4gBARIRCgRsYXN0GAUgASgFSASIAQFCCAoGX3doZXJlQggKBl9hZnRlckIJCgdfYmVmb3JlQggKBl9maXJzdEIHCgVfbGFzdCK8AQogTGlzdFByb2plY3ROb3RpZmljYXRpb25zUmVzcG9uc2USPQoNbm90aWZpY2F0aW9ucxgBIAMoCzImLm5vdGlmaWNhdGlvbnMudjEuQ3VzdG9tZXJOb3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUSKwoJcGFnZV9pbmZvGAMgASgLMhMuY29tbW9uLnYxLlBhZ2VJbmZvSACIAQESDwoHY3Vyc29ycxgEIAMoCUIMCgpfcGFnZV9pbmZvIm8KFk5vdGlmaWNhdGlvblByZWZlcmVuY2USEAoIY2F0ZWdvcnkYASABKAkSFQoNZW1haWxfZW5hYmxlZBgCIAEoCBIUCgxwdXNoX2VuYWJsZWQYAyABKAgSFgoOaW5fYXBwX2VuYWJsZWQYBCABKAgiOAohR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJImMKIkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVzcG9uc2USPQoLcHJlZmVyZW5jZXMYASADKAsyKC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2Ui1gEKI1VwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEhAKCGNhdGVnb3J5GAIgASgJEhoKDWVtYWlsX2VuYWJsZWQYAyABKAhIAIgBARIZCgxwdXNoX2VuYWJsZWQYBCABKAhIAYgBARIbCg5pbl9hcHBfZW5hYmxlZBgFIAEoCEgCiAEBQhAKDl9lbWFpbF9lbmFibGVkQg8KDV9wdXNoX2VuYWJsZWRCEQoPX2luX2FwcF9lbmFibGVkIjcKJFVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIInwKGlJlZ2lzdGVyRGV2aWNlVG9rZW5SZXF1ZXN0EhMKC2N1c3RvbWVyX2lkGAEgASgJEg0KBXRva2VuGAIgASgJEhAKCHBsYXRmb3JtGAMgASgJEhgKC2RldmljZV9uYW1lGAQgASgJSACIAQFCDgoMX2RldmljZV9uYW1lIi4KG1JlZ2lzdGVyRGV2aWNlVG9rZW5SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIi0KHFVucmVnaXN0ZXJEZXZpY2VUb2tlblJlcXVlc3QSDQoFdG9rZW4YASABKAkiMAodVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLIAwoOUHVzaENyZWRlbnRpYWwSCgoCaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghwbGF0Zm9ybRgDIAEoCRIWCglidW5kbGVfaWQYCiABKAlIAIgBARIZCgxhcG5zX3RlYW1faWQYCyABKAlIAYgBARIYCgthcG5zX2tleV9pZBgMIAEoCUgCiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgNIAEoCEgDiAEBEhsKDmZjbV9wcm9qZWN0X2lkGBQgASgJSASIAQESHQoQZmNtX2NsaWVudF9lbWFpbBgVIAEoCUgFiAEBEhIKCmhhc19zZWNyZXQYHiABKAgSLgoKY3JlYXRlZF9hdBgyIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgzIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCDAoKX2J1bmRsZV9pZEIPCg1fYXBuc190ZWFtX2lkQg4KDF9hcG5zX2tleV9pZEISChBfYXBuc19wcm9kdWN0aW9uQhEKD19mY21fcHJvamVjdF9pZEITChFfZmNtX2NsaWVudF9lbWFpbCLfAgobVXBsb2FkUHVzaENyZWRlbnRpYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIcGxhdGZvcm0YAiABKAkSGAoLYXBuc19wOF9rZXkYCiABKAlIAIgBARIWCglidW5kbGVfaWQYCyABKAlIAYgBARIZCgxhcG5zX3RlYW1faWQYDCABKAlIAogBARIYCgthcG5zX2tleV9pZBgNIAEoCUgDiAEBEhwKD2FwbnNfcHJvZHVjdGlvbhgOIAEoCEgEiAEBEiUKGGZjbV9zZXJ2aWNlX2FjY291bnRfanNvbhgUIAEoCUgFiAEBQg4KDF9hcG5zX3A4X2tleUIMCgpfYnVuZGxlX2lkQg8KDV9hcG5zX3RlYW1faWRCDgoMX2FwbnNfa2V5X2lkQhIKEF9hcG5zX3Byb2R1Y3Rpb25CGwoZX2ZjbV9zZXJ2aWNlX2FjY291bnRfanNvbiJUChxVcGxvYWRQdXNoQ3JlZGVudGlhbFJlc3BvbnNlEjQKCmNyZWRlbnRpYWwYASABKAsyIC5ub3RpZmljYXRpb25zLnYxLlB1c2hDcmVkZW50aWFsIjAKGkxpc3RQdXNoQ3JlZGVudGlhbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVAobTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEjUKC2NyZWRlbnRpYWxzGAEgAygLMiAubm90aWZpY2F0aW9ucy52MS5QdXNoQ3JlZGVudGlhbCIpChtEZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QSCgoCaWQYASABKAkiLwocRGVsZXRlUHVzaENyZWRlbnRpYWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIKsgCChBOb3RpZmljYXRpb25UeXBlEiEKHU5PVElGSUNBVElPTl9UWVBFX1VOU1BFQ0lGSUVEEAASIwofTk9USUZJQ0FUSU9OX1RZUEVfSk9CX0NPTVBMRVRFRBABEiAKHE5PVElGSUNBVElPTl9UWVBFX0pPQl9GQUlMRUQQAhIiCh5OT1RJRklDQVRJT05fVFlQRV9KT0JfUFJPR1JFU1MQAxIdChlOT1RJRklDQVRJT05fVFlQRV9NRU5USU9OEAQSIAocTk9USUZJQ0FUSU9OX1RZUEVfTk9URV9SRVBMWRAFEiMKH05PVElGSUNBVElPTl9UWVBFX05PVEVfUkVTT0xWRUQQBhIcChhOT1RJRklDQVRJT05fVFlQRV9TWVNURU0QBxIiCh5OT1RJRklDQVRJT05fVFlQRV9BTk5PVU5DRU1FTlQQCCr1AQoWTm90aWZpY2F0aW9uU291cmNlVHlwZRIoCiROT1RJRklDQVRJT05fU09VUkNFX1RZUEVfVU5TUEVDSUZJRUQQABIjCh9OT1RJRklDQVRJT05fU09VUkNFX1RZUEVfUkVDT1JEEAESIgoeTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX01PREVMEAISIQodTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX05PVEUQAxIgChxOT1RJRklDQVRJT05fU09VUkNFX1RZUEVfSk9CEAQSIwofTk9USUZJQ0FUSU9OX1NPVVJDRV9UWVBFX1NZU1RFTRAFMvUTChROb3RpZmljYXRpb25zU2VydmljZRJsChFMaXN0Tm90aWZpY2F0aW9ucxIqLm5vdGlmaWNhdGlvbnMudjEuTGlzdE5vdGlmaWNhdGlvbnNSZXF1ZXN0Gisubm90aWZpY2F0aW9ucy52MS5MaXN0Tm90aWZpY2F0aW9uc1Jlc3BvbnNlEmMKDkdldFVucmVhZENvdW50Eicubm90aWZpY2F0aW9ucy52MS5HZXRVbnJlYWRDb3VudFJlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLkdldFVucmVhZENvdW50UmVzcG9uc2USdQoUTWFya05vdGlmaWNhdGlvblJlYWQSLS5ub3RpZmljYXRpb25zLnYxLk1hcmtOb3RpZmljYXRpb25SZWFkUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuTWFya05vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKBAQoYTWFya0FsbE5vdGlmaWNhdGlvbnNSZWFkEjEubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5NYXJrQWxsTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRJvChJEZWxldGVOb3RpZmljYXRpb24SKy5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlcXVlc3QaLC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvblJlc3BvbnNlEmkKEFNlbmRBbm5vdW5jZW1lbnQSKS5ub3RpZmljYXRpb25zLnYxLlNlbmRBbm5vdW5jZW1lbnRSZXF1ZXN0Gioubm90aWZpY2F0aW9ucy52MS5TZW5kQW5ub3VuY2VtZW50UmVzcG9uc2USfgoXTGlzdEFubm91bmNlbWVudEhpc3RvcnkSMC5ub3RpZmljYXRpb25zLnYxLkxpc3RBbm5vdW5jZW1lbnRIaXN0b3J5UmVxdWVzdBoxLm5vdGlmaWNhdGlvbnMudjEuTGlzdEFubm91bmNlbWVudEhpc3RvcnlSZXNwb25zZRKEAQoZTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9ucxIyLm5vdGlmaWNhdGlvbnMudjEuTGlzdEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlcXVlc3QaMy5ub3RpZmljYXRpb25zLnYxLkxpc3RDdXN0b21lck5vdGlmaWNhdGlvbnNSZXNwb25zZRKBAQoYU2VuZEN1c3RvbWVyTm90aWZpY2F0aW9uEjEubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5TZW5kQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvbhI1Lm5vdGlmaWNhdGlvbnMudjEuU2VuZEJ1bGtDdXN0b21lck5vdGlmaWNhdGlvblJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlNlbmRCdWxrQ3VzdG9tZXJOb3RpZmljYXRpb25SZXNwb25zZRKNAQocTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZBI1Lm5vdGlmaWNhdGlvbnMudjEuTWFya0N1c3RvbWVyTm90aWZpY2F0aW9uUmVhZFJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLk1hcmtDdXN0b21lck5vdGlmaWNhdGlvblJlYWRSZXNwb25zZRKZAQogTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWQSOS5ub3RpZmljYXRpb25zLnYxLk1hcmtBbGxDdXN0b21lck5vdGlmaWNhdGlvbnNSZWFkUmVxdWVzdBo6Lm5vdGlmaWNhdGlvbnMudjEuTWFya0FsbEN1c3RvbWVyTm90aWZpY2F0aW9uc1JlYWRSZXNwb25zZRKBAQoYTGlzdFByb2plY3ROb3RpZmljYXRpb25zEjEubm90aWZpY2F0aW9ucy52MS5MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXF1ZXN0GjIubm90aWZpY2F0aW9ucy52MS5MaXN0UHJvamVjdE5vdGlmaWNhdGlvbnNSZXNwb25zZRKHAQoaR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXMSMy5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblByZWZlcmVuY2VzUmVxdWVzdBo0Lm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uUHJlZmVyZW5jZXNSZXNwb25zZRKNAQocVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZRI1Lm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uUHJlZmVyZW5jZVJlcXVlc3QaNi5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblByZWZlcmVuY2VSZXNwb25zZRJyChNSZWdpc3RlckRldmljZVRva2VuEiwubm90aWZpY2F0aW9ucy52MS5SZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJEZXZpY2VUb2tlblJlc3BvbnNlEngKFVVucmVnaXN0ZXJEZXZpY2VUb2tlbhIuLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVxdWVzdBovLm5vdGlmaWNhdGlvbnMudjEuVW5yZWdpc3RlckRldmljZVRva2VuUmVzcG9uc2USdQoUVXBsb2FkUHVzaENyZWRlbnRpYWwSLS5ub3RpZmljYXRpb25zLnYxLlVwbG9hZFB1c2hDcmVkZW50aWFsUmVxdWVzdBouLm5vdGlmaWNhdGlvbnMudjEuVXBsb2FkUHVzaENyZWRlbnRpYWxSZXNwb25zZRJyChNMaXN0UHVzaENyZWRlbnRpYWxzEiwubm90aWZpY2F0aW9ucy52MS5MaXN0UHVzaENyZWRlbnRpYWxzUmVxdWVzdBotLm5vdGlmaWNhdGlvbnMudjEuTGlzdFB1c2hDcmVkZW50aWFsc1Jlc3BvbnNlEnUKFERlbGV0ZVB1c2hDcmVkZW50aWFsEi0ubm90aWZpY2F0aW9ucy52MS5EZWxldGVQdXNoQ3JlZGVudGlhbFJlcXVlc3QaLi5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZVB1c2hDcmVkZW50aWFsUmVzcG9uc2VCR1pFZ2l0aHViLmNvbS9laWRlc3R1ZGlvL2ZvaXIvZ2VuL3Byb3RvL25vdGlmaWNhdGlvbnMvdjE7bm90aWZpY2F0aW9uc3YxYgZwcm90bzM", [file_google_protobuf_struct10, file_google_protobuf_timestamp11, file_common_v1_pagination]);
847
920
  var NotificationSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 0);
848
921
  var ListNotificationsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 1);
849
922
  var MarkNotificationReadRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 3);
850
923
  var MarkAllNotificationsReadRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 5);
924
+ var DeleteNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 7);
925
+ var GetUnreadCountRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 9);
926
+ var SendAnnouncementRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 11);
927
+ var ListAnnouncementHistoryRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 13);
928
+ var ListCustomerNotificationsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 16);
851
929
  var SendCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 18);
852
- var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 34);
853
- var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 36);
854
- var PushCredentialSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 38);
855
- var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 39);
856
- var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 41);
857
- var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 43);
930
+ var SendBulkCustomerNotificationRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 20);
931
+ var RegisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 33);
932
+ var UnregisterDeviceTokenRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 35);
933
+ var PushCredentialSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 37);
934
+ var UploadPushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 38);
935
+ var ListPushCredentialsRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 40);
936
+ var DeletePushCredentialRequestSchema = /* @__PURE__ */ messageDesc15(file_notifications_v1_notifications, 42);
937
+ var NotificationTypeSchema = /* @__PURE__ */ enumDesc10(file_notifications_v1_notifications, 0);
938
+ var NotificationType = /* @__PURE__ */ tsEnum10(NotificationTypeSchema);
858
939
  var NotificationsService = /* @__PURE__ */ serviceDesc11(file_notifications_v1_notifications, 0);
859
940
 
860
941
  // ../../packages/proto-ts/src/schedules/v1/schedules_pb.js
@@ -917,7 +998,14 @@ var SetAppMappingRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps
917
998
  var ValidateManifestRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 22);
918
999
  var ValidateManifestResponseSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 24);
919
1000
  var TriggerOperationRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 25);
1001
+ var CompleteAppInstallRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 27);
1002
+ var RotateAppCredentialRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 29);
1003
+ var GetAppCredentialStructRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 31);
1004
+ var AppInstallationServiceUninstallAppRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 33);
1005
+ var ListAppEventsRequestSchema = /* @__PURE__ */ messageDesc19(file_apps_v1_apps_service, 47);
920
1006
  var AppsService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 0);
1007
+ var AppInstallationService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 1);
1008
+ var AppStatusService = /* @__PURE__ */ serviceDesc13(file_apps_v1_apps_service, 3);
921
1009
 
922
1010
  // ../../packages/proto-ts/src/secrets/v1/secrets_pb.js
923
1011
  import { enumDesc as enumDesc14, fileDesc as fileDesc20, messageDesc as messageDesc20, serviceDesc as serviceDesc14, tsEnum as tsEnum14 } from "@bufbuild/protobuf/codegenv2";
@@ -934,13 +1022,23 @@ var OwnerKindSchema = /* @__PURE__ */ enumDesc14(file_secrets_v1_secrets, 0);
934
1022
  var OwnerKind = /* @__PURE__ */ tsEnum14(OwnerKindSchema);
935
1023
  var SecretsService = /* @__PURE__ */ serviceDesc14(file_secrets_v1_secrets, 0);
936
1024
 
937
- // ../../packages/rpc-node/src/rpc/identity.ts
1025
+ // ../../packages/rpc-core/src/identity.ts
938
1026
  import { create } from "@bufbuild/protobuf";
939
1027
 
940
- // ../../packages/rpc-node/src/rpc/_pagination.ts
1028
+ // ../../packages/rpc-core/src/_shared.ts
1029
+ import { timestampFromDate } from "@bufbuild/protobuf/wkt";
941
1030
  var DEFAULT_PAGE_SIZE = 50;
1031
+ function toPageInfo(pi) {
1032
+ if (!pi) return void 0;
1033
+ return {
1034
+ hasNextPage: pi.hasNextPage,
1035
+ hasPreviousPage: pi.hasPreviousPage,
1036
+ startCursor: pi.startCursor ?? "",
1037
+ endCursor: pi.endCursor ?? ""
1038
+ };
1039
+ }
942
1040
 
943
- // ../../packages/rpc-node/src/rpc/identity.ts
1041
+ // ../../packages/rpc-core/src/identity.ts
944
1042
  function createIdentityMethods(client) {
945
1043
  return {
946
1044
  // ── Auth ──────────────────────────────────────────────
@@ -1096,16 +1194,29 @@ function createIdentityMethods(client) {
1096
1194
  return { user: resp.user ?? null };
1097
1195
  },
1098
1196
  async listAdminUsers(params = {}) {
1197
+ let where = params.where;
1198
+ if (!where && params.search) {
1199
+ where = {
1200
+ OR: [
1201
+ { email: { contains: params.search } },
1202
+ { firstName: { contains: params.search } },
1203
+ { lastName: { contains: params.search } }
1204
+ ]
1205
+ };
1206
+ }
1099
1207
  const resp = await client.listAdminUsers(
1100
1208
  create(ListAdminUsersRequestSchema, {
1101
- where: params.where,
1209
+ where,
1102
1210
  first: params.first ?? DEFAULT_PAGE_SIZE,
1103
- after: params?.after
1211
+ after: params.after,
1212
+ last: params.last,
1213
+ before: params.before
1104
1214
  })
1105
1215
  );
1106
1216
  return {
1107
1217
  items: resp.items ?? [],
1108
1218
  total: Number(resp.total),
1219
+ pageInfo: toPageInfo(resp.pageInfo),
1109
1220
  cursors: resp.cursors ?? []
1110
1221
  };
1111
1222
  },
@@ -1164,12 +1275,15 @@ function createIdentityMethods(client) {
1164
1275
  create(ListCustomersRequestSchema, {
1165
1276
  where: params.where,
1166
1277
  first: params.first ?? DEFAULT_PAGE_SIZE,
1167
- after: params?.after
1278
+ after: params.after,
1279
+ last: params.last,
1280
+ before: params.before
1168
1281
  })
1169
1282
  );
1170
1283
  return {
1171
1284
  items: resp.items ?? [],
1172
1285
  total: Number(resp.total),
1286
+ pageInfo: toPageInfo(resp.pageInfo),
1173
1287
  cursors: resp.cursors ?? []
1174
1288
  };
1175
1289
  },
@@ -1221,17 +1335,26 @@ function createIdentityMethods(client) {
1221
1335
  );
1222
1336
  return { tenant: resp.tenant ?? null };
1223
1337
  },
1338
+ async activateTenant(params) {
1339
+ const resp = await client.activateTenant(
1340
+ create(ActivateTenantRequestSchema, { tenantId: params.tenantId })
1341
+ );
1342
+ return { tenant: resp.tenant ?? null };
1343
+ },
1224
1344
  async listTenants(params = {}) {
1225
1345
  const resp = await client.listTenants(
1226
1346
  create(ListTenantsRequestSchema, {
1227
1347
  where: params.where,
1228
1348
  first: params.first ?? DEFAULT_PAGE_SIZE,
1229
- after: params?.after
1349
+ after: params.after,
1350
+ last: params.last,
1351
+ before: params.before
1230
1352
  })
1231
1353
  );
1232
1354
  return {
1233
1355
  items: resp.items ?? [],
1234
1356
  total: Number(resp.total),
1357
+ pageInfo: toPageInfo(resp.pageInfo),
1235
1358
  cursors: resp.cursors ?? []
1236
1359
  };
1237
1360
  },
@@ -1247,7 +1370,22 @@ function createIdentityMethods(client) {
1247
1370
  create(CreateProjectRequestSchema, {
1248
1371
  tenantId: params.tenantId,
1249
1372
  name: params.name,
1250
- description: params.description
1373
+ description: params.description,
1374
+ defaultLocaleCode: params.defaultLocaleCode,
1375
+ defaultLocaleDisplayName: params.defaultLocaleDisplayName,
1376
+ defaultLocaleNativeName: params.defaultLocaleNativeName,
1377
+ defaultLocaleIsRtl: params.defaultLocaleIsRtl,
1378
+ displayName: params.displayName,
1379
+ logoUrl: params.logoUrl,
1380
+ primaryColor: params.primaryColor,
1381
+ fromName: params.fromName,
1382
+ replyTo: params.replyTo,
1383
+ supportEmail: params.supportEmail,
1384
+ appBaseUrl: params.appBaseUrl,
1385
+ customerWelcomeEmailEnabled: params.customerWelcomeEmailEnabled,
1386
+ customerSignupEnabled: params.customerSignupEnabled,
1387
+ customerPasswordEnabled: params.customerPasswordEnabled,
1388
+ customerOtpEnabled: params.customerOtpEnabled
1251
1389
  })
1252
1390
  );
1253
1391
  return { project: resp.project ?? null };
@@ -1256,7 +1394,7 @@ function createIdentityMethods(client) {
1256
1394
  const resp = await client.getProject(
1257
1395
  create(GetProjectRequestSchema, { id })
1258
1396
  );
1259
- return { project: resp.project ?? null };
1397
+ return resp.project ?? null;
1260
1398
  },
1261
1399
  async updateProject(params) {
1262
1400
  const resp = await client.updateProject(
@@ -1264,6 +1402,7 @@ function createIdentityMethods(client) {
1264
1402
  id: params.id,
1265
1403
  name: params.name,
1266
1404
  description: params.description,
1405
+ status: params.status,
1267
1406
  displayName: params.displayName,
1268
1407
  logoUrl: params.logoUrl,
1269
1408
  primaryColor: params.primaryColor,
@@ -1277,7 +1416,7 @@ function createIdentityMethods(client) {
1277
1416
  customerOtpEnabled: params.customerOtpEnabled
1278
1417
  })
1279
1418
  );
1280
- return { project: resp.project ?? null };
1419
+ return resp.project ?? null;
1281
1420
  },
1282
1421
  async listProjects(params) {
1283
1422
  const resp = await client.listProjects(
@@ -1285,12 +1424,16 @@ function createIdentityMethods(client) {
1285
1424
  tenantId: params.tenantId,
1286
1425
  where: params.where,
1287
1426
  first: params.first ?? DEFAULT_PAGE_SIZE,
1288
- after: params?.after
1427
+ after: params.after,
1428
+ last: params.last,
1429
+ before: params.before
1289
1430
  })
1290
1431
  );
1291
1432
  return {
1292
1433
  items: resp.items ?? [],
1293
- total: Number(resp.total)
1434
+ total: Number(resp.total),
1435
+ pageInfo: toPageInfo(resp.pageInfo),
1436
+ cursors: resp.cursors ?? []
1294
1437
  };
1295
1438
  },
1296
1439
  async deleteProject(id) {
@@ -1335,12 +1478,16 @@ function createIdentityMethods(client) {
1335
1478
  tenantId: params.tenantId,
1336
1479
  where: params.where,
1337
1480
  first: params.first ?? DEFAULT_PAGE_SIZE,
1338
- after: params?.after
1481
+ after: params.after,
1482
+ last: params.last,
1483
+ before: params.before
1339
1484
  })
1340
1485
  );
1341
1486
  return {
1342
1487
  items: resp.items ?? [],
1343
- total: Number(resp.total)
1488
+ total: Number(resp.total),
1489
+ pageInfo: toPageInfo(resp.pageInfo),
1490
+ cursors: resp.cursors ?? []
1344
1491
  };
1345
1492
  },
1346
1493
  async revokeInvitation(invitationId) {
@@ -1369,16 +1516,96 @@ function createIdentityMethods(client) {
1369
1516
  invitation: resp.invitation ?? null
1370
1517
  };
1371
1518
  },
1519
+ // ── Customer Invitations ──────────────────────────────
1520
+ async createCustomerInvitation(params) {
1521
+ const resp = await client.createCustomerInvitation(
1522
+ create(CreateCustomerInvitationRequestSchema, {
1523
+ email: params.email,
1524
+ invitedBy: params.invitedBy,
1525
+ message: params.message,
1526
+ sendEmail: params.sendEmail,
1527
+ acceptUrlOverride: params.acceptUrlOverride
1528
+ })
1529
+ );
1530
+ return {
1531
+ invitation: resp.invitation ?? null,
1532
+ acceptUrl: resp.acceptUrl,
1533
+ token: resp.token
1534
+ };
1535
+ },
1536
+ async listCustomerInvitations(params = {}) {
1537
+ const resp = await client.listCustomerInvitations(
1538
+ create(ListCustomerInvitationsRequestSchema, {
1539
+ where: params.where,
1540
+ first: params.first ?? DEFAULT_PAGE_SIZE,
1541
+ after: params.after,
1542
+ last: params.last,
1543
+ before: params.before
1544
+ })
1545
+ );
1546
+ return {
1547
+ items: resp.items ?? [],
1548
+ total: resp.total,
1549
+ pageInfo: toPageInfo(resp.pageInfo),
1550
+ cursors: resp.cursors ?? []
1551
+ };
1552
+ },
1553
+ async getCustomerInvitation(id) {
1554
+ const resp = await client.getCustomerInvitation(
1555
+ create(GetCustomerInvitationRequestSchema, { id })
1556
+ );
1557
+ return { invitation: resp.invitation ?? null };
1558
+ },
1559
+ async revokeCustomerInvitation(id) {
1560
+ const resp = await client.revokeCustomerInvitation(
1561
+ create(RevokeCustomerInvitationRequestSchema, { id })
1562
+ );
1563
+ return { success: resp.success };
1564
+ },
1565
+ async resendCustomerInvitation(params) {
1566
+ const resp = await client.resendCustomerInvitation(
1567
+ create(ResendCustomerInvitationRequestSchema, {
1568
+ id: params.id,
1569
+ sendEmail: params.sendEmail,
1570
+ acceptUrlOverride: params.acceptUrlOverride
1571
+ })
1572
+ );
1573
+ return {
1574
+ invitation: resp.invitation ?? null,
1575
+ acceptUrl: resp.acceptUrl,
1576
+ token: resp.token
1577
+ };
1578
+ },
1579
+ async validateCustomerInvitation(token) {
1580
+ const resp = await client.validateCustomerInvitation(
1581
+ create(ValidateCustomerInvitationRequestSchema, { token })
1582
+ );
1583
+ return {
1584
+ invitation: resp.invitation ?? null,
1585
+ providers: resp.providers ?? []
1586
+ };
1587
+ },
1588
+ async acceptCustomerInvitation(params) {
1589
+ const resp = await client.acceptCustomerInvitation(
1590
+ create(AcceptCustomerInvitationRequestSchema, {
1591
+ token: params.token,
1592
+ password: params.password
1593
+ })
1594
+ );
1595
+ return resp;
1596
+ },
1372
1597
  // ── API Keys ──────────────────────────────────────────
1373
1598
  async createApiKey(params) {
1374
1599
  const resp = await client.createApiKey(
1375
1600
  create(CreateApiKeyRequestSchema, {
1376
1601
  name: params.name,
1377
1602
  keyType: params.keyType,
1603
+ scopes: params.scopes,
1378
1604
  rateLimitPerHour: params.rateLimitPerHour,
1605
+ expiresAt: params.expiresAt ? timestampFromDate(new Date(params.expiresAt)) : void 0,
1379
1606
  allowedModels: params.allowedModels,
1380
1607
  allowedFileTypes: params.allowedFileTypes,
1381
- scopes: params.scopes
1608
+ configId: params.configId
1382
1609
  })
1383
1610
  );
1384
1611
  return { apiKey: resp.apiKey ?? null };
@@ -1392,13 +1619,18 @@ function createIdentityMethods(client) {
1392
1619
  async listApiKeys(params = {}) {
1393
1620
  const resp = await client.listApiKeys(
1394
1621
  create(ListApiKeysRequestSchema, {
1622
+ where: params.where,
1395
1623
  first: params.first ?? DEFAULT_PAGE_SIZE,
1396
- after: params?.after
1624
+ after: params.after,
1625
+ last: params.last,
1626
+ before: params.before
1397
1627
  })
1398
1628
  );
1399
1629
  return {
1400
1630
  items: resp.items ?? [],
1401
- total: Number(resp.total)
1631
+ total: Number(resp.total),
1632
+ pageInfo: toPageInfo(resp.pageInfo),
1633
+ cursors: resp.cursors ?? []
1402
1634
  };
1403
1635
  },
1404
1636
  async updateApiKey(params) {
@@ -1426,86 +1658,6 @@ function createIdentityMethods(client) {
1426
1658
  );
1427
1659
  return { success: resp.success };
1428
1660
  },
1429
- // ── Customer Roles (customer RBAC) ───────────────────────────
1430
- //
1431
- // Default + named roles whose `permissions` become a customer access
1432
- // token's scope set at mint time. A role with isDefault:true grants its
1433
- // permissions to every customer in the project with no per-customer
1434
- // assignment. `self:*` in permissions expands to the project's
1435
- // customer-writable record scopes; operations:execute must be listed
1436
- // explicitly (self:* does not include it). See EID-125.
1437
- async listCustomerRoles(params = {}) {
1438
- const where = {};
1439
- if (params.tenantId) where.tenantId = params.tenantId;
1440
- if (params.projectId) where.projectId = params.projectId;
1441
- const resp = await client.listCustomerRoles(
1442
- create(ListCustomerRolesRequestSchema, {
1443
- where: Object.keys(where).length > 0 ? where : void 0,
1444
- first: params.first ?? DEFAULT_PAGE_SIZE
1445
- })
1446
- );
1447
- return { items: resp.items ?? [], total: resp.total };
1448
- },
1449
- async getCustomerRole(id) {
1450
- const resp = await client.getCustomerRole(
1451
- create(GetCustomerRoleRequestSchema, { id })
1452
- );
1453
- return resp.role ?? null;
1454
- },
1455
- async createCustomerRole(params) {
1456
- const resp = await client.createCustomerRole(
1457
- create(CreateCustomerRoleRequestSchema, {
1458
- tenantId: params.tenantId,
1459
- projectId: params.projectId,
1460
- key: params.key,
1461
- name: params.name,
1462
- permissions: params.permissions,
1463
- isDefault: params.isDefault ?? false
1464
- })
1465
- );
1466
- return resp.role ?? null;
1467
- },
1468
- async updateCustomerRole(params) {
1469
- const resp = await client.updateCustomerRole(
1470
- create(UpdateCustomerRoleRequestSchema, {
1471
- id: params.id,
1472
- name: params.name,
1473
- permissions: params.permissions ?? [],
1474
- isDefault: params.isDefault
1475
- })
1476
- );
1477
- return resp.role ?? null;
1478
- },
1479
- async disableCustomerRole(id) {
1480
- await client.disableCustomerRole(
1481
- create(DisableCustomerRoleRequestSchema, { id })
1482
- );
1483
- },
1484
- async assignCustomerRole(params) {
1485
- const resp = await client.assignCustomerRole(
1486
- create(AssignCustomerRoleRequestSchema, {
1487
- customerId: params.customerId,
1488
- roleId: params.roleId
1489
- })
1490
- );
1491
- return resp.assignment ?? null;
1492
- },
1493
- async revokeCustomerRoleAssignment(id) {
1494
- await client.revokeCustomerRoleAssignment(
1495
- create(RevokeCustomerRoleAssignmentRequestSchema, { id })
1496
- );
1497
- },
1498
- async listCustomerRoleAssignments(params) {
1499
- const where = {};
1500
- if (params.customerId) where.customerId = params.customerId;
1501
- if (params.roleId) where.roleId = params.roleId;
1502
- const resp = await client.listCustomerRoleAssignments(
1503
- create(ListCustomerRoleAssignmentsRequestSchema, {
1504
- where: Object.keys(where).length > 0 ? where : void 0
1505
- })
1506
- );
1507
- return { items: resp.items ?? [], total: resp.total };
1508
- },
1509
1661
  // ── Service Tokens ──────────────────────────────────────────
1510
1662
  async mintServiceToken(purpose) {
1511
1663
  const resp = await client.mintServiceToken(
@@ -1523,12 +1675,16 @@ function createIdentityMethods(client) {
1523
1675
  create(ListAuthProvidersRequestSchema, {
1524
1676
  where: params.where,
1525
1677
  first: params.first ?? DEFAULT_PAGE_SIZE,
1526
- after: params?.after
1678
+ after: params.after,
1679
+ last: params.last,
1680
+ before: params.before
1527
1681
  })
1528
1682
  );
1529
1683
  return {
1530
1684
  items: resp.providers ?? [],
1531
- total: resp.total
1685
+ total: resp.total,
1686
+ pageInfo: toPageInfo(resp.pageInfo),
1687
+ cursors: resp.cursors ?? []
1532
1688
  };
1533
1689
  },
1534
1690
  async getAuthProvider(id) {
@@ -1546,7 +1702,8 @@ function createIdentityMethods(client) {
1546
1702
  config: params.config,
1547
1703
  enabled: params.enabled,
1548
1704
  isDefault: params.isDefault,
1549
- priority: params.priority
1705
+ priority: params.priority,
1706
+ configId: params.configId
1550
1707
  })
1551
1708
  );
1552
1709
  return resp.provider ?? null;
@@ -1570,12 +1727,6 @@ function createIdentityMethods(client) {
1570
1727
  );
1571
1728
  return resp.success;
1572
1729
  },
1573
- async publishAuthProvider(id) {
1574
- const resp = await client.publishAuthProvider(
1575
- create(PublishAuthProviderRequestSchema, { id })
1576
- );
1577
- return resp.provider ?? null;
1578
- },
1579
1730
  async enabledOAuthProviders() {
1580
1731
  const resp = await client.enabledOAuthProviders(
1581
1732
  create(EnabledOAuthProvidersRequestSchema, {})
@@ -1622,6 +1773,7 @@ function createIdentityMethods(client) {
1622
1773
  async listMyOAuthConnections(params = {}) {
1623
1774
  return client.listMyOAuthConnections(
1624
1775
  create(ListMyOAuthConnectionsRequestSchema, {
1776
+ where: params.where,
1625
1777
  first: params.first ?? DEFAULT_PAGE_SIZE,
1626
1778
  after: params.after,
1627
1779
  last: params.last,
@@ -1642,26 +1794,87 @@ function createIdentityMethods(client) {
1642
1794
  );
1643
1795
  return resp.success;
1644
1796
  },
1645
- // ── Customer Auth ────────────────────────────────────────
1646
- async getCustomerAuthConfig() {
1647
- const resp = await client.getCustomerAuthConfig(
1648
- create(GetCustomerAuthConfigRequestSchema, {})
1797
+ async getCustomerManagementStatus() {
1798
+ const resp = await client.getCustomerManagementStatus(
1799
+ create(GetCustomerManagementStatusRequestSchema, {})
1649
1800
  );
1650
- return resp.config ?? null;
1801
+ return resp.status ?? null;
1651
1802
  },
1652
- async verifyCustomerToken(token) {
1653
- const resp = await client.verifyCustomerToken(
1654
- create(VerifyCustomerTokenRequestSchema, { token })
1803
+ // ── Auth provider schema publish lifecycle ─────────────
1804
+ async publishAuthProvider(id) {
1805
+ const resp = await client.publishAuthProvider(
1806
+ create(PublishAuthProviderRequestSchema, { id })
1655
1807
  );
1656
- return resp;
1808
+ return {
1809
+ provider: resp.provider ?? null,
1810
+ breakingChanges: resp.breakingChanges ?? []
1811
+ };
1657
1812
  },
1658
- async getCustomerManagementStatus() {
1659
- const resp = await client.getCustomerManagementStatus(
1660
- create(GetCustomerManagementStatusRequestSchema, {})
1813
+ async unpublishAuthProvider(id) {
1814
+ const resp = await client.unpublishAuthProvider(
1815
+ create(UnpublishAuthProviderRequestSchema, { id })
1816
+ );
1817
+ return resp.provider ?? null;
1818
+ },
1819
+ async getAuthProviderPublishStatus(id) {
1820
+ const resp = await client.getAuthProviderPublishStatus(
1821
+ create(GetAuthProviderPublishStatusRequestSchema, { id })
1661
1822
  );
1662
1823
  return resp.status ?? null;
1663
1824
  },
1664
- // ── Login-with-Foir: relying parties (unified) ────────────
1825
+ async scheduleAuthProviderPublish(id, publishAt, unpublishAt) {
1826
+ const resp = await client.scheduleAuthProviderPublish(
1827
+ create(ScheduleAuthProviderPublishRequestSchema, {
1828
+ id,
1829
+ publishAt: timestampFromDate(publishAt),
1830
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
1831
+ })
1832
+ );
1833
+ return resp.provider ?? null;
1834
+ },
1835
+ async cancelScheduledAuthProviderPublish(id) {
1836
+ const resp = await client.cancelScheduledAuthProviderPublish(
1837
+ create(CancelScheduledAuthProviderPublishRequestSchema, { id })
1838
+ );
1839
+ return resp.provider ?? null;
1840
+ },
1841
+ // Auth provider version history.
1842
+ async listAuthProviderVersions(authProviderId, params = {}) {
1843
+ const resp = await client.listAuthProviderVersions(
1844
+ create(ListAuthProviderVersionsRequestSchema, {
1845
+ authProviderId,
1846
+ first: params.first ?? DEFAULT_PAGE_SIZE,
1847
+ after: params.after,
1848
+ last: params.last,
1849
+ before: params.before
1850
+ })
1851
+ );
1852
+ return {
1853
+ items: resp.versions ?? [],
1854
+ total: resp.total,
1855
+ pageInfo: toPageInfo(resp.pageInfo),
1856
+ cursors: resp.cursors ?? []
1857
+ };
1858
+ },
1859
+ async getAuthProviderVersion(versionId) {
1860
+ const resp = await client.getAuthProviderVersion(
1861
+ create(GetAuthProviderVersionRequestSchema, { id: versionId })
1862
+ );
1863
+ return resp.version ?? null;
1864
+ },
1865
+ async restoreAuthProviderVersion(versionId, changeDescription) {
1866
+ const resp = await client.restoreAuthProviderVersion(
1867
+ create(RestoreAuthProviderVersionRequestSchema, {
1868
+ versionId,
1869
+ changeDescription
1870
+ })
1871
+ );
1872
+ return {
1873
+ provider: resp.provider ?? null,
1874
+ newVersion: resp.newVersion ?? null
1875
+ };
1876
+ },
1877
+ // ── Login with Foir: relying parties (unified) ───────────
1665
1878
  async listRelyingParties(params) {
1666
1879
  const resp = await client.listRelyingParties(
1667
1880
  create(ListRelyingPartiesRequestSchema, {
@@ -1724,7 +1937,7 @@ function createIdentityMethods(client) {
1724
1937
  create(DisableRelyingPartyRequestSchema, params)
1725
1938
  );
1726
1939
  },
1727
- // ── Login-with-Foir: custom domains (EID-46) ─────────────
1940
+ // ── Login with Foir: custom domains (EID-46) ─────────────
1728
1941
  async listCustomDomains(params) {
1729
1942
  const resp = await client.listCustomDomains(
1730
1943
  create(ListCustomDomainsRequestSchema, {
@@ -1757,7 +1970,183 @@ function createIdentityMethods(client) {
1757
1970
  create(DeleteCustomDomainRequestSchema, { id: params.id })
1758
1971
  );
1759
1972
  },
1760
- // ── Login-with-Foir: relying-party grants (admin-only) ────
1973
+ async listCustomerSessions(params) {
1974
+ const resp = await client.listCustomerSessions(
1975
+ create(ListCustomerSessionsRequestSchema, {
1976
+ relyingPartyId: params.relyingPartyId
1977
+ })
1978
+ );
1979
+ return { items: resp.items ?? [] };
1980
+ },
1981
+ async revokeCustomerSession(params) {
1982
+ await client.revokeCustomerSession(
1983
+ create(RevokeCustomerSessionRequestSchema, { id: params.id })
1984
+ );
1985
+ },
1986
+ // ── Login with Foir: customer roles + assignments ────────
1987
+ // Customer roles now ride the unified Role RPCs (EID-129) with
1988
+ // principalKind=CUSTOMER; the wrapper keeps the customer-named surface and
1989
+ // the legacy {customerId} assignment shape so callers are unchanged.
1990
+ async listCustomerRoles(params = {}) {
1991
+ const resp = await client.listRoles(
1992
+ create(ListRolesRequestSchema, {
1993
+ principalKind: RolePrincipalKind.CUSTOMER,
1994
+ where: params.where,
1995
+ first: params.first ?? DEFAULT_PAGE_SIZE,
1996
+ after: params.after,
1997
+ last: params.last,
1998
+ before: params.before
1999
+ })
2000
+ );
2001
+ return { items: resp.items ?? [], total: resp.total };
2002
+ },
2003
+ async getCustomerRole(id) {
2004
+ const resp = await client.getRole(create(GetRoleRequestSchema, { id }));
2005
+ return resp.role ?? null;
2006
+ },
2007
+ async createCustomerRole(params) {
2008
+ const resp = await client.createRole(
2009
+ create(CreateRoleRequestSchema, {
2010
+ principalKind: RolePrincipalKind.CUSTOMER,
2011
+ tenantId: params.tenantId,
2012
+ projectId: params.projectId,
2013
+ key: params.key,
2014
+ name: params.name,
2015
+ permissions: params.permissions,
2016
+ isDefault: params.isDefault ?? false
2017
+ })
2018
+ );
2019
+ return resp.role ?? null;
2020
+ },
2021
+ async updateCustomerRole(params) {
2022
+ const resp = await client.updateRole(
2023
+ create(UpdateRoleRequestSchema, {
2024
+ id: params.id,
2025
+ name: params.name,
2026
+ permissions: params.permissions ?? [],
2027
+ isDefault: params.isDefault
2028
+ })
2029
+ );
2030
+ return resp.role ?? null;
2031
+ },
2032
+ async disableCustomerRole(id) {
2033
+ await client.disableRole(create(DisableRoleRequestSchema, { id }));
2034
+ },
2035
+ async assignCustomerRole(params) {
2036
+ const resp = await client.assignRole(
2037
+ create(AssignRoleRequestSchema, {
2038
+ principalKind: RolePrincipalKind.CUSTOMER,
2039
+ principalId: params.customerId,
2040
+ roleId: params.roleId
2041
+ })
2042
+ );
2043
+ return resp.assignment ? { ...resp.assignment, customerId: resp.assignment.principalId } : null;
2044
+ },
2045
+ async revokeCustomerRoleAssignment(id) {
2046
+ await client.revokeRoleAssignment(
2047
+ create(RevokeRoleAssignmentRequestSchema, { id })
2048
+ );
2049
+ },
2050
+ async listCustomerRoleAssignments(params = {}) {
2051
+ const where = params.where ? {
2052
+ ...params.where,
2053
+ ...typeof params.where.customerId === "string" ? { principalId: params.where.customerId } : {}
2054
+ } : void 0;
2055
+ const resp = await client.listRoleAssignments(
2056
+ create(ListRoleAssignmentsRequestSchema, {
2057
+ principalKind: RolePrincipalKind.CUSTOMER,
2058
+ where,
2059
+ first: params.first ?? DEFAULT_PAGE_SIZE,
2060
+ after: params.after,
2061
+ last: params.last,
2062
+ before: params.before
2063
+ })
2064
+ );
2065
+ return {
2066
+ items: (resp.items ?? []).map((a) => ({
2067
+ ...a,
2068
+ customerId: a.principalId
2069
+ })),
2070
+ total: resp.total
2071
+ };
2072
+ },
2073
+ // ── Unified roles (EID-127/129): generic principal_kind surface ──
2074
+ // Used by the admin role-management UI for custom admin roles; customer
2075
+ // roles continue to use the *CustomerRole methods above (which call these).
2076
+ async listRoles(params) {
2077
+ const resp = await client.listRoles(
2078
+ create(ListRolesRequestSchema, {
2079
+ principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
2080
+ where: params.where,
2081
+ first: params.first ?? DEFAULT_PAGE_SIZE,
2082
+ after: params.after,
2083
+ last: params.last,
2084
+ before: params.before
2085
+ })
2086
+ );
2087
+ return { items: resp.items ?? [], total: resp.total };
2088
+ },
2089
+ async getRole(id) {
2090
+ const resp = await client.getRole(create(GetRoleRequestSchema, { id }));
2091
+ return resp.role ?? null;
2092
+ },
2093
+ async createRole(params) {
2094
+ const resp = await client.createRole(
2095
+ create(CreateRoleRequestSchema, {
2096
+ principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
2097
+ tenantId: params.tenantId,
2098
+ projectId: params.projectId,
2099
+ key: params.key,
2100
+ name: params.name,
2101
+ permissions: params.permissions,
2102
+ isDefault: params.isDefault ?? false
2103
+ })
2104
+ );
2105
+ return resp.role ?? null;
2106
+ },
2107
+ async updateRole(params) {
2108
+ const resp = await client.updateRole(
2109
+ create(UpdateRoleRequestSchema, {
2110
+ id: params.id,
2111
+ name: params.name,
2112
+ permissions: params.permissions ?? [],
2113
+ isDefault: params.isDefault
2114
+ })
2115
+ );
2116
+ return resp.role ?? null;
2117
+ },
2118
+ async disableRole(id) {
2119
+ await client.disableRole(create(DisableRoleRequestSchema, { id }));
2120
+ },
2121
+ async assignRole(params) {
2122
+ const resp = await client.assignRole(
2123
+ create(AssignRoleRequestSchema, {
2124
+ principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
2125
+ principalId: params.principalId,
2126
+ roleId: params.roleId
2127
+ })
2128
+ );
2129
+ return resp.assignment ?? null;
2130
+ },
2131
+ async revokeRoleAssignment(id) {
2132
+ await client.revokeRoleAssignment(
2133
+ create(RevokeRoleAssignmentRequestSchema, { id })
2134
+ );
2135
+ },
2136
+ async listRoleAssignments(params) {
2137
+ const resp = await client.listRoleAssignments(
2138
+ create(ListRoleAssignmentsRequestSchema, {
2139
+ principalKind: params.principalKind === "admin" ? RolePrincipalKind.ADMIN : RolePrincipalKind.CUSTOMER,
2140
+ where: params.where,
2141
+ first: params.first ?? DEFAULT_PAGE_SIZE,
2142
+ after: params.after,
2143
+ last: params.last,
2144
+ before: params.before
2145
+ })
2146
+ );
2147
+ return { items: resp.items ?? [], total: resp.total };
2148
+ },
2149
+ // ── Login with Foir: relying-party grants (admin-only) ───
1761
2150
  async listRelyingPartyGrants(params = {}) {
1762
2151
  const resp = await client.listRelyingPartyGrants(
1763
2152
  create(ListRelyingPartyGrantsRequestSchema, {
@@ -1768,11 +2157,7 @@ function createIdentityMethods(client) {
1768
2157
  },
1769
2158
  async grantRelyingParty(params) {
1770
2159
  const resp = await client.grantRelyingParty(
1771
- create(GrantRelyingPartyRequestSchema, {
1772
- adminUserId: params.adminUserId,
1773
- clientId: params.clientId,
1774
- scopes: params.scopes
1775
- })
2160
+ create(GrantRelyingPartyRequestSchema, params)
1776
2161
  );
1777
2162
  return resp.grant ?? null;
1778
2163
  },
@@ -1784,15 +2169,16 @@ function createIdentityMethods(client) {
1784
2169
  };
1785
2170
  }
1786
2171
 
1787
- // ../../packages/rpc-node/src/rpc/apps.ts
2172
+ // ../../packages/rpc-core/src/apps.ts
1788
2173
  import { create as create2 } from "@bufbuild/protobuf";
1789
- function createAppsMethods(client) {
2174
+ function createAppsMethods(client, statusClient) {
1790
2175
  return {
1791
2176
  async listApps(params) {
1792
2177
  return client.listApps(
1793
2178
  create2(ListAppsRequestSchema, {
1794
2179
  tenantId: params.tenantId,
1795
2180
  projectId: params.projectId,
2181
+ where: params.where,
1796
2182
  first: params.first ?? DEFAULT_PAGE_SIZE,
1797
2183
  after: params.after,
1798
2184
  last: params.last,
@@ -1806,6 +2192,7 @@ function createAppsMethods(client) {
1806
2192
  );
1807
2193
  return resp.app ?? null;
1808
2194
  },
2195
+ // Install — two-call path.
1809
2196
  async installApp(tenantId, projectId, manifestUrl) {
1810
2197
  return client.installApp(
1811
2198
  create2(InstallAppRequestSchema, { tenantId, projectId, manifestUrl })
@@ -1824,6 +2211,7 @@ function createAppsMethods(client) {
1824
2211
  );
1825
2212
  return resp.app;
1826
2213
  },
2214
+ // Update — two-phase.
1827
2215
  async updateApp(tenantId, projectId, name) {
1828
2216
  return client.updateApp(
1829
2217
  create2(UpdateAppRequestSchema, { tenantId, projectId, name })
@@ -1885,35 +2273,103 @@ function createAppsMethods(client) {
1885
2273
  })
1886
2274
  );
1887
2275
  return resp.executionId;
2276
+ },
2277
+ async listAppEvents(params) {
2278
+ const resp = await statusClient.listAppEvents(
2279
+ create2(ListAppEventsRequestSchema, {
2280
+ tenantId: params.tenantId,
2281
+ projectId: params.projectId,
2282
+ appName: params.appName,
2283
+ where: params.where,
2284
+ first: params.first ?? DEFAULT_PAGE_SIZE,
2285
+ after: params.after,
2286
+ last: params.last,
2287
+ before: params.before
2288
+ })
2289
+ );
2290
+ return resp.events;
1888
2291
  }
1889
2292
  };
1890
2293
  }
1891
2294
 
1892
- // ../../packages/rpc-node/src/rpc/models.ts
2295
+ // ../../packages/rpc-core/src/models.ts
1893
2296
  import { create as create3, fromJson } from "@bufbuild/protobuf";
1894
2297
  import { ValueSchema } from "@bufbuild/protobuf/wkt";
2298
+ function buildModelWhere(p) {
2299
+ const clauses = [];
2300
+ if (p.search) {
2301
+ clauses.push({
2302
+ OR: [{ name: { contains: p.search } }, { key: { contains: p.search } }]
2303
+ });
2304
+ }
2305
+ if (p.category) clauses.push({ category: { eq: p.category } });
2306
+ if (p.configId) clauses.push({ configId: { eq: p.configId } });
2307
+ if (p.inline !== void 0) clauses.push({ inline: { eq: p.inline } });
2308
+ if (clauses.length === 0) return void 0;
2309
+ if (clauses.length === 1) return clauses[0];
2310
+ return { AND: clauses };
2311
+ }
2312
+ function stripUndefined(obj) {
2313
+ const result = {};
2314
+ for (const [k, v] of Object.entries(obj)) {
2315
+ if (v !== void 0) result[k] = v;
2316
+ }
2317
+ return result;
2318
+ }
2319
+ function relationshipKindToProto(kind) {
2320
+ if (kind === "composition") return RelationshipKind.COMPOSITION;
2321
+ if (kind === "association") return RelationshipKind.ASSOCIATION;
2322
+ return RelationshipKind.UNSPECIFIED;
2323
+ }
2324
+ function relationshipKindFromProto(k) {
2325
+ return k === RelationshipKind.COMPOSITION ? "composition" : "association";
2326
+ }
2327
+ function fieldConfigWithRelationship(f) {
2328
+ const config2 = {
2329
+ ...f.config ?? {}
2330
+ };
2331
+ const r = f.relationship;
2332
+ if (r && r.kind !== RelationshipKind.UNSPECIFIED) {
2333
+ config2.relationship = {
2334
+ kind: relationshipKindFromProto(r.kind),
2335
+ ...r.inverse ? { inverse: r.inverse } : {}
2336
+ };
2337
+ }
2338
+ return config2;
2339
+ }
1895
2340
  function jsFieldToProto(f) {
2341
+ const rawConfig = f.config && typeof f.config === "object" ? stripUndefined(f.config) : void 0;
2342
+ const relSource = rawConfig?.relationship ?? (f.relationship ? {
2343
+ kind: relationshipKindFromProto(f.relationship.kind),
2344
+ inverse: f.relationship.inverse
2345
+ } : void 0);
2346
+ const relationship = relSource && relSource.kind ? create3(RelationshipConfigSchema, {
2347
+ kind: relationshipKindToProto(relSource.kind),
2348
+ inverse: relSource.inverse
2349
+ }) : void 0;
2350
+ if (rawConfig) delete rawConfig.relationship;
2351
+ const config2 = rawConfig && Object.keys(rawConfig).length > 0 ? rawConfig : void 0;
1896
2352
  return create3(FieldSchema, {
1897
2353
  id: f.id,
1898
2354
  key: f.key,
1899
2355
  label: f.label,
1900
2356
  type: f.type,
1901
2357
  required: f.required,
1902
- // Declares the field for the typed-filter side table so it can be used
1903
- // in where/orderBy. Without it the platform rejects sort by this field.
2358
+ // Indexes the field into record_field_index for typed where/orderBy; the
2359
+ // platform rejects sort by an unqueryable field. Without this the schema
2360
+ // editor's "Indexed for filtering & sorting" toggle silently no-ops.
1904
2361
  queryable: f.queryable,
1905
2362
  helpText: f.helpText,
1906
2363
  placeholder: f.placeholder,
1907
2364
  defaultValue: f.defaultValue !== void 0 ? fromJson(ValueSchema, f.defaultValue) : void 0,
1908
- config: f.config && Object.keys(f.config).length > 0 ? f.config : void 0,
2365
+ config: config2,
1909
2366
  itemType: f.itemType,
1910
2367
  storage: f.storage,
1911
2368
  templateZone: f.templateZone,
1912
2369
  zoneOrder: f.zoneOrder,
1913
- // Per-field {read, write} principal policy. foir.config.ts authors set
1914
- // e.g. access: { write: ['service', 'admin'] } to lock a field; the
1915
- // platform enforces it on every write path.
1916
- access: f.access
2370
+ // Per-field {read, write} principal policy; platform enforces it on writes.
2371
+ access: f.access,
2372
+ relationship
1917
2373
  });
1918
2374
  }
1919
2375
  function jsConfigToProto(c) {
@@ -1928,6 +2384,7 @@ function jsConfigToProto(c) {
1928
2384
  requireAcceptance: c.sharing.requireAcceptance
1929
2385
  }) : void 0,
1930
2386
  pluralName: c.pluralName,
2387
+ pluralKey: c.pluralKey,
1931
2388
  description: c.description,
1932
2389
  category: c.category,
1933
2390
  icon: c.icon,
@@ -1960,19 +2417,6 @@ function cacheControlScopeFromJs(scope) {
1960
2417
  return CacheControlScope.UNSPECIFIED;
1961
2418
  }
1962
2419
  }
1963
- function buildModelWhere(p) {
1964
- const clauses = [];
1965
- if (p.search) {
1966
- clauses.push({
1967
- OR: [{ name: { contains: p.search } }, { key: { contains: p.search } }]
1968
- });
1969
- }
1970
- if (p.category) clauses.push({ category: { eq: p.category } });
1971
- if (p.configId) clauses.push({ configId: { eq: p.configId } });
1972
- if (clauses.length === 0) return void 0;
1973
- if (clauses.length === 1) return clauses[0];
1974
- return { AND: clauses };
1975
- }
1976
2420
  function createModelsMethods(client) {
1977
2421
  return {
1978
2422
  // ── Queries ──────────────────────────────────────────────
@@ -1991,12 +2435,16 @@ function createModelsMethods(client) {
1991
2435
  create3(ListModelsRequestSchema, {
1992
2436
  where: buildModelWhere(params),
1993
2437
  first: params.first ?? DEFAULT_PAGE_SIZE,
1994
- after: params?.after
2438
+ after: params.after,
2439
+ last: params.last,
2440
+ before: params.before
1995
2441
  })
1996
2442
  );
1997
2443
  return {
1998
2444
  items: resp.models ?? [],
1999
- total: resp.total
2445
+ total: resp.total,
2446
+ pageInfo: toPageInfo(resp.pageInfo),
2447
+ cursors: resp.cursors ?? []
2000
2448
  };
2001
2449
  },
2002
2450
  // ── Mutations ────────────────────────────────────────────
@@ -2047,39 +2495,73 @@ function createModelsMethods(client) {
2047
2495
  create3(ListModelVersionsRequestSchema, {
2048
2496
  modelId,
2049
2497
  first: params.first ?? DEFAULT_PAGE_SIZE,
2050
- after: params?.after
2498
+ after: params.after,
2499
+ last: params.last,
2500
+ before: params.before
2051
2501
  })
2052
2502
  );
2053
2503
  return {
2054
2504
  items: resp.versions ?? [],
2055
- total: resp.total
2505
+ total: resp.total,
2506
+ pageInfo: toPageInfo(resp.pageInfo),
2507
+ cursors: resp.cursors ?? []
2056
2508
  };
2057
2509
  },
2510
+ async getModelVersion(modelId, versionId) {
2511
+ const resp = await client.getModelVersion(
2512
+ create3(GetModelVersionRequestSchema, { modelId, versionId })
2513
+ );
2514
+ return resp.version ?? null;
2515
+ },
2058
2516
  async restoreModelVersion(modelId, versionId) {
2059
2517
  const resp = await client.restoreModelVersion(
2060
2518
  create3(RestoreModelVersionRequestSchema, { modelId, versionId })
2061
2519
  );
2062
2520
  return resp.model ?? null;
2063
2521
  },
2522
+ // ── Publish lifecycle ─────────────────────────────────────
2064
2523
  async publishModel(id) {
2065
2524
  const resp = await client.publishModel(
2066
2525
  create3(PublishModelRequestSchema, { id })
2067
2526
  );
2527
+ return {
2528
+ model: resp.model ?? null,
2529
+ breakingChanges: resp.breakingChanges ?? []
2530
+ };
2531
+ },
2532
+ async unpublishModel(id) {
2533
+ const resp = await client.unpublishModel(
2534
+ create3(UnpublishModelRequestSchema, { id })
2535
+ );
2068
2536
  return resp.model ?? null;
2069
2537
  },
2070
- // Pending-publish state for one model: whether the draft diverges from
2071
- // the published snapshot, and the severity-tagged change list. CLI push
2072
- // reads this to decide whether an update is safe to auto-publish.
2073
2538
  async getModelPublishStatus(id) {
2074
2539
  const resp = await client.getModelPublishStatus(
2075
2540
  create3(GetModelPublishStatusRequestSchema, { id })
2076
2541
  );
2077
2542
  return resp.status ?? null;
2543
+ },
2544
+ // ── Scheduled publishing ──────────────────────────────────
2545
+ async scheduleModelPublish(id, publishAt, unpublishAt) {
2546
+ const resp = await client.scheduleModelPublish(
2547
+ create3(ScheduleModelPublishRequestSchema, {
2548
+ id,
2549
+ publishAt: timestampFromDate(publishAt),
2550
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
2551
+ })
2552
+ );
2553
+ return resp.model ?? null;
2554
+ },
2555
+ async cancelScheduledModelPublish(id) {
2556
+ const resp = await client.cancelScheduledModelPublish(
2557
+ create3(CancelScheduledModelPublishRequestSchema, { id })
2558
+ );
2559
+ return resp.model ?? null;
2078
2560
  }
2079
2561
  };
2080
2562
  }
2081
2563
 
2082
- // ../../packages/rpc-node/src/rpc/records.ts
2564
+ // ../../packages/rpc-core/src/records.ts
2083
2565
  import { create as create4 } from "@bufbuild/protobuf";
2084
2566
  function sanitizeData(obj) {
2085
2567
  const result = {};
@@ -2145,10 +2627,17 @@ function createRecordsMethods(client) {
2145
2627
  modelKey: params.modelKey,
2146
2628
  customerId: params.customerId,
2147
2629
  search: params.search,
2148
- // CLI is admin-equivalent and must see drafts; without preview the
2149
- // platform now hides unpublished records on publishable models.
2630
+ // Admin must always see drafts; the publish-state filter on the
2631
+ // platform side only kicks in for non-preview callers (the public
2632
+ // API), and admin lists would otherwise hide unpublished records.
2150
2633
  preview: true,
2151
2634
  where: params.where ? sanitizeData(params.where) : void 0,
2635
+ sort: params.sort?.map(
2636
+ (s) => create4(SortFieldSchema, {
2637
+ field: s.field,
2638
+ descending: s.descending ?? false
2639
+ })
2640
+ ),
2152
2641
  first: params.first,
2153
2642
  after: params.after,
2154
2643
  last: params.last,
@@ -2278,7 +2767,9 @@ function createRecordsMethods(client) {
2278
2767
  create4(ListRecordVersionsRequestSchema, {
2279
2768
  parentId,
2280
2769
  first: params?.first ?? DEFAULT_PAGE_SIZE,
2281
- after: params?.after
2770
+ after: params?.after,
2771
+ last: params?.last,
2772
+ before: params?.before
2282
2773
  })
2283
2774
  );
2284
2775
  return {
@@ -2297,11 +2788,12 @@ function createRecordsMethods(client) {
2297
2788
  );
2298
2789
  return resp.variant ?? null;
2299
2790
  },
2300
- async updateVariant(variantId, data) {
2791
+ async updateVariant(variantId, data, metadataPatch) {
2301
2792
  const resp = await client.updateVariant(
2302
2793
  create4(UpdateVariantRequestSchema, {
2303
2794
  variantId,
2304
- data: sanitizeData(data)
2795
+ data: data !== void 0 ? sanitizeData(data) : void 0,
2796
+ metadataPatch: metadataPatch !== void 0 ? sanitizeData(metadataPatch) : void 0
2305
2797
  })
2306
2798
  );
2307
2799
  return resp.variant ?? null;
@@ -2323,7 +2815,9 @@ function createRecordsMethods(client) {
2323
2815
  create4(ListRecordVariantsRequestSchema, {
2324
2816
  recordId,
2325
2817
  first: params?.first ?? DEFAULT_PAGE_SIZE,
2326
- after: params?.after
2818
+ after: params?.after,
2819
+ last: params?.last,
2820
+ before: params?.before
2327
2821
  })
2328
2822
  );
2329
2823
  return {
@@ -2336,14 +2830,8 @@ function createRecordsMethods(client) {
2336
2830
  const resp = await client.scheduleRecordPublish(
2337
2831
  create4(ScheduleRecordPublishRequestSchema, {
2338
2832
  versionId,
2339
- publishAt: {
2340
- seconds: BigInt(Math.floor(publishAt.getTime() / 1e3)),
2341
- nanos: 0
2342
- },
2343
- unpublishAt: unpublishAt ? {
2344
- seconds: BigInt(Math.floor(unpublishAt.getTime() / 1e3)),
2345
- nanos: 0
2346
- } : void 0
2833
+ publishAt: timestampFromDate(publishAt),
2834
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
2347
2835
  })
2348
2836
  );
2349
2837
  return resp.version ?? null;
@@ -2357,22 +2845,26 @@ function createRecordsMethods(client) {
2357
2845
  async listScheduledPublishes(params) {
2358
2846
  const resp = await client.listScheduledPublishes(
2359
2847
  create4(ListScheduledPublishesRequestSchema, {
2360
- from: params?.from ? {
2361
- seconds: BigInt(Math.floor(params.from.getTime() / 1e3)),
2362
- nanos: 0
2363
- } : void 0,
2364
- to: params?.to ? {
2365
- seconds: BigInt(Math.floor(params.to.getTime() / 1e3)),
2366
- nanos: 0
2367
- } : void 0,
2848
+ from: params?.from ? timestampFromDate(params.from) : void 0,
2849
+ to: params?.to ? timestampFromDate(params.to) : void 0,
2368
2850
  modelKey: params?.modelKey,
2369
2851
  first: params?.first ?? DEFAULT_PAGE_SIZE,
2370
- after: params?.after
2852
+ after: params?.after,
2853
+ last: params?.last,
2854
+ before: params?.before
2371
2855
  })
2372
2856
  );
2857
+ const pi = resp.pageInfo;
2373
2858
  return {
2374
2859
  items: resp.versions ?? [],
2375
- total: resp.total
2860
+ total: resp.total,
2861
+ pageInfo: pi ? {
2862
+ hasNextPage: pi.hasNextPage,
2863
+ hasPreviousPage: pi.hasPreviousPage,
2864
+ startCursor: pi.startCursor ?? "",
2865
+ endCursor: pi.endCursor ?? ""
2866
+ } : void 0,
2867
+ cursors: resp.cursors ?? []
2376
2868
  };
2377
2869
  },
2378
2870
  async listDraftVersions(params) {
@@ -2381,12 +2873,23 @@ function createRecordsMethods(client) {
2381
2873
  modelKey: params?.modelKey,
2382
2874
  search: params?.search,
2383
2875
  first: params?.first ?? DEFAULT_PAGE_SIZE,
2384
- after: params?.after
2876
+ after: params?.after,
2877
+ last: params?.last,
2878
+ before: params?.before,
2879
+ dedupeByParent: params?.dedupeByParent ?? false
2385
2880
  })
2386
2881
  );
2882
+ const pi = resp.pageInfo;
2387
2883
  return {
2388
2884
  items: resp.versions ?? [],
2389
- total: resp.total
2885
+ total: resp.total,
2886
+ pageInfo: pi ? {
2887
+ hasNextPage: pi.hasNextPage,
2888
+ hasPreviousPage: pi.hasPreviousPage,
2889
+ startCursor: pi.startCursor ?? "",
2890
+ endCursor: pi.endCursor ?? ""
2891
+ } : void 0,
2892
+ cursors: resp.cursors ?? []
2390
2893
  };
2391
2894
  },
2392
2895
  // ── Batch Publishing ──────────────────────────────────────
@@ -2406,7 +2909,9 @@ function createRecordsMethods(client) {
2406
2909
  query: params.query,
2407
2910
  modelKeys: params.modelKeys ?? [],
2408
2911
  first: params.first ?? 20,
2409
- after: params?.after
2912
+ after: params.after,
2913
+ last: params.last,
2914
+ before: params.before
2410
2915
  })
2411
2916
  );
2412
2917
  return {
@@ -2434,7 +2939,9 @@ function createRecordsMethods(client) {
2434
2939
  recordId: params.recordId,
2435
2940
  modelKey: params.modelKey,
2436
2941
  first: params.first ?? 10,
2437
- after: params?.after
2942
+ after: params.after,
2943
+ last: params.last,
2944
+ before: params.before
2438
2945
  })
2439
2946
  );
2440
2947
  return resp.records ?? [];
@@ -2446,7 +2953,9 @@ function createRecordsMethods(client) {
2446
2953
  vector: params.vector,
2447
2954
  dimensions: params.dimensions,
2448
2955
  provider: params.provider,
2449
- modelName: params.modelName
2956
+ modelName: params.modelName,
2957
+ key: params.key,
2958
+ contentHash: params.contentHash
2450
2959
  })
2451
2960
  );
2452
2961
  return resp.success;
@@ -2455,23 +2964,119 @@ function createRecordsMethods(client) {
2455
2964
  const resp = await client.deleteEmbeddings(
2456
2965
  create4(DeleteEmbeddingsRequestSchema, { recordId })
2457
2966
  );
2458
- return resp.success;
2967
+ return resp.success;
2968
+ },
2969
+ async searchEmbeddings(params) {
2970
+ const resp = await client.searchEmbeddings(
2971
+ create4(SearchEmbeddingsRequestSchema, {
2972
+ queryVector: params.queryVector,
2973
+ modelKey: params.modelKey,
2974
+ first: params.first ?? 10,
2975
+ after: params.after,
2976
+ last: params.last,
2977
+ before: params.before
2978
+ })
2979
+ );
2980
+ return resp.results ?? [];
2981
+ },
2982
+ // ── Lookups (Stage 5 admin surfaces) ──────────────────────
2983
+ /**
2984
+ * Inline-validation check for record-edit forms. Returns true
2985
+ * when the (lookup, key) is currently unused in the given
2986
+ * slice, excluding the record being edited. Boolean-only —
2987
+ * the platform never leaks colliding record ids through this
2988
+ * surface.
2989
+ */
2990
+ async checkLookupAvailability(params) {
2991
+ const resp = await client.checkLookupAvailability(
2992
+ create4(CheckLookupAvailabilityRequestSchema, {
2993
+ modelKey: params.modelKey,
2994
+ lookupName: params.lookupName,
2995
+ keyHash: params.keyHash,
2996
+ channel: params.channel,
2997
+ variantId: params.variantId,
2998
+ locale: params.locale,
2999
+ excludeRecordId: params.excludeRecordId
3000
+ })
3001
+ );
3002
+ return resp.available;
2459
3003
  },
2460
- async searchEmbeddings(params) {
2461
- const resp = await client.searchEmbeddings(
2462
- create4(SearchEmbeddingsRequestSchema, {
2463
- queryVector: params.queryVector,
3004
+ /**
3005
+ * Lists key conflicts in the projection for a model + channel
3006
+ * (optionally filtered to one lookup). Each ConflictGroup
3007
+ * carries 2+ record ids that collide on the same scope —
3008
+ * operator opens each record, resolves the duplicate, and
3009
+ * re-runs the rebuild action.
3010
+ */
3011
+ async listLookupConflicts(params) {
3012
+ return client.listLookupConflicts(
3013
+ create4(ListLookupConflictsRequestSchema, {
2464
3014
  modelKey: params.modelKey,
2465
- first: params.first ?? 10,
2466
- after: params?.after
3015
+ channel: params.channel,
3016
+ lookupName: params.lookupName,
3017
+ first: params.first ?? DEFAULT_PAGE_SIZE,
3018
+ after: params.after,
3019
+ last: params.last,
3020
+ before: params.before
2467
3021
  })
2468
3022
  );
2469
- return resp.results ?? [];
3023
+ },
3024
+ /**
3025
+ * Re-walks every record in the model and re-emits projection
3026
+ * rows. Used after the operator clears a conflict from the
3027
+ * list — returns the count of records walked so the admin UI
3028
+ * can show a "rebuilt N records" confirmation.
3029
+ */
3030
+ async rebuildModelLookups(modelKey) {
3031
+ const resp = await client.rebuildModelLookups(
3032
+ create4(RebuildModelLookupsRequestSchema, { modelKey })
3033
+ );
3034
+ return resp.recordsWalked ?? 0;
3035
+ },
3036
+ /**
3037
+ * Slow-query advisor (Stage 10 item 9 of the query/mutate
3038
+ * redesign): returns the top-N (field, operator) pairs that have
3039
+ * fallen to the JSONB-extract slow path. The admin model-edit
3040
+ * page calls this with a model key for the per-model panel; the
3041
+ * top-level performance page calls it without a key to aggregate
3042
+ * across every model in the project.
3043
+ */
3044
+ async listSlowQueryAdvisorEntries(resourceType, resourceKey, rowLimit) {
3045
+ const resp = await client.listSlowQueryAdvisorEntries(
3046
+ create4(ListSlowQueryAdvisorEntriesRequestSchema, {
3047
+ resourceType,
3048
+ resourceKey: resourceKey || void 0,
3049
+ rowLimit
3050
+ })
3051
+ );
3052
+ return resp.entries;
3053
+ },
3054
+ /**
3055
+ * Per-resource entry-count + total-hits summary for a resource type
3056
+ * ('record' | 'profile'). Cheap aggregate the model list page uses to
3057
+ * render a performance badge next to each model name so operators can
3058
+ * spot slow-path-heavy resources without drilling in. Cardinality is
3059
+ * bounded by (resource_key) so the table scan stays small.
3060
+ */
3061
+ async slowQueryAdvisorSummary(resourceType) {
3062
+ const resp = await client.slowQueryAdvisorSummary({ resourceType });
3063
+ return resp.resources;
3064
+ },
3065
+ /**
3066
+ * Clears a single (resourceType, resourceKey, field, operator) advisor
3067
+ * entry after the "Promote to queryable" admin action — keeps the panel
3068
+ * from listing a field that's already been promoted. The auto-backfill
3069
+ * from item 1 catches up the index.
3070
+ */
3071
+ async clearSlowQueryAdvisorEntry(params) {
3072
+ return client.clearSlowQueryAdvisorEntry(
3073
+ create4(ClearSlowQueryAdvisorEntryRequestSchema, params)
3074
+ );
2470
3075
  }
2471
3076
  };
2472
3077
  }
2473
3078
 
2474
- // ../../packages/rpc-node/src/rpc/realtime.ts
3079
+ // ../../packages/rpc-core/src/realtime.ts
2475
3080
  import { create as create5 } from "@bufbuild/protobuf";
2476
3081
  var POLICY_NAMES = {
2477
3082
  [PersistencePolicy.UNSPECIFIED]: "unspecified",
@@ -2508,7 +3113,7 @@ function createRealtimeMethods(client) {
2508
3113
  };
2509
3114
  }
2510
3115
 
2511
- // ../../packages/rpc-node/src/rpc/configs.ts
3116
+ // ../../packages/rpc-core/src/configs.ts
2512
3117
  import { create as create6 } from "@bufbuild/protobuf";
2513
3118
  var DIRECTION_TO_PROTO = {
2514
3119
  read: ConfigDirection.READ,
@@ -2517,17 +3122,16 @@ var DIRECTION_TO_PROTO = {
2517
3122
  };
2518
3123
  function createConfigsMethods(client) {
2519
3124
  return {
2520
- // ── Operations ────────────────────────────────────────────
2521
- async listOperations(params = {}) {
2522
- return client.listOperations(
2523
- create6(ListOperationsRequestSchema, {
2524
- where: params.where,
3125
+ // ── Queries ──────────────────────────────────────────────
3126
+ async listConfigHistory(configId, params = {}) {
3127
+ return client.listConfigHistory(
3128
+ create6(ListConfigHistoryRequestSchema, {
3129
+ configId,
2525
3130
  first: params.first ?? DEFAULT_PAGE_SIZE,
2526
- after: params?.after
3131
+ after: params.after
2527
3132
  })
2528
3133
  );
2529
3134
  },
2530
- // ── Queries ──────────────────────────────────────────────
2531
3135
  async getConfig(id) {
2532
3136
  const resp = await client.getConfig(
2533
3137
  create6(GetConfigRequestSchema, { id })
@@ -2545,7 +3149,9 @@ function createConfigsMethods(client) {
2545
3149
  create6(ListConfigsRequestSchema, {
2546
3150
  where: params.where,
2547
3151
  first: params.first ?? DEFAULT_PAGE_SIZE,
2548
- after: params?.after
3152
+ after: params.after,
3153
+ last: params.last,
3154
+ before: params.before
2549
3155
  })
2550
3156
  );
2551
3157
  },
@@ -2621,7 +3227,7 @@ function createConfigsMethods(client) {
2621
3227
  };
2622
3228
  }
2623
3229
 
2624
- // ../../packages/rpc-node/src/rpc/segments.ts
3230
+ // ../../packages/rpc-core/src/segments.ts
2625
3231
  import { create as create7 } from "@bufbuild/protobuf";
2626
3232
  function rawOperandToProto(raw) {
2627
3233
  return create7(RuleOperandSchema, {
@@ -2664,7 +3270,9 @@ function createSegmentsMethods(client) {
2664
3270
  create7(ListSegmentsRequestSchema, {
2665
3271
  where: params.where,
2666
3272
  first: params.first ?? DEFAULT_PAGE_SIZE,
2667
- after: params?.after
3273
+ after: params.after,
3274
+ last: params.last,
3275
+ before: params.before
2668
3276
  })
2669
3277
  );
2670
3278
  },
@@ -2679,9 +3287,9 @@ function createSegmentsMethods(client) {
2679
3287
  rules,
2680
3288
  evaluationMode: params.evaluationMode,
2681
3289
  isActive: params.isActive,
2682
- configId: params.configId,
2683
3290
  manualMemberIds: params.manualMemberIds,
2684
- manualMemberMode: params.manualMemberMode
3291
+ manualMemberMode: params.manualMemberMode,
3292
+ configId: params.configId
2685
3293
  })
2686
3294
  );
2687
3295
  return resp.segment ?? null;
@@ -2695,7 +3303,9 @@ function createSegmentsMethods(client) {
2695
3303
  description: params.description,
2696
3304
  rules,
2697
3305
  evaluationMode: params.evaluationMode,
2698
- isActive: params.isActive
3306
+ isActive: params.isActive,
3307
+ manualMemberIds: params.manualMemberIds,
3308
+ manualMemberMode: params.manualMemberMode
2699
3309
  })
2700
3310
  );
2701
3311
  return resp.segment ?? null;
@@ -2749,23 +3359,9 @@ function createSegmentsMethods(client) {
2749
3359
  };
2750
3360
  }
2751
3361
 
2752
- // ../../packages/rpc-node/src/rpc/settings.ts
2753
- import { ConnectError as ConnectError2, Code as Code2 } from "@connectrpc/connect";
3362
+ // ../../packages/rpc-core/src/settings.ts
2754
3363
  import { create as create8 } from "@bufbuild/protobuf";
2755
- function jsProfileFieldToProto(f) {
2756
- return create8(CustomerProfileFieldSchema, {
2757
- id: f.id,
2758
- key: f.key,
2759
- type: f.type,
2760
- label: f.label,
2761
- required: f.required,
2762
- queryable: f.queryable,
2763
- access: f.access,
2764
- helpText: f.helpText,
2765
- placeholder: f.placeholder,
2766
- config: f.config
2767
- });
2768
- }
3364
+ import { ConnectError as ConnectError2, Code as Code2 } from "@connectrpc/connect";
2769
3365
  function createSettingsMethods(client) {
2770
3366
  return {
2771
3367
  // ── Settings ─────────────────────────────────────────────
@@ -2799,7 +3395,9 @@ function createSettingsMethods(client) {
2799
3395
  create8(ListMyMentionsRequestSchema, {
2800
3396
  where: params.where,
2801
3397
  first: params.first ?? DEFAULT_PAGE_SIZE,
2802
- after: params?.after
3398
+ after: params.after,
3399
+ last: params.last,
3400
+ before: params.before
2803
3401
  })
2804
3402
  );
2805
3403
  },
@@ -2833,7 +3431,9 @@ function createSettingsMethods(client) {
2833
3431
  create8(ListNotesRequestSchema, {
2834
3432
  where: params.where,
2835
3433
  first: params.first ?? DEFAULT_PAGE_SIZE,
2836
- after: params?.after
3434
+ after: params.after,
3435
+ last: params.last,
3436
+ before: params.before
2837
3437
  })
2838
3438
  );
2839
3439
  },
@@ -2859,7 +3459,9 @@ function createSettingsMethods(client) {
2859
3459
  create8(ListContextDimensionsRequestSchema, {
2860
3460
  search: params.search,
2861
3461
  first: params.first ?? DEFAULT_PAGE_SIZE,
2862
- after: params?.after
3462
+ after: params.after,
3463
+ last: params.last,
3464
+ before: params.before
2863
3465
  })
2864
3466
  );
2865
3467
  },
@@ -2907,7 +3509,9 @@ function createSettingsMethods(client) {
2907
3509
  dimensionKey,
2908
3510
  search: params.search,
2909
3511
  first: params.first ?? DEFAULT_PAGE_SIZE,
2910
- after: params?.after
3512
+ after: params.after,
3513
+ last: params.last,
3514
+ before: params.before
2911
3515
  })
2912
3516
  );
2913
3517
  },
@@ -2959,7 +3563,20 @@ function createSettingsMethods(client) {
2959
3563
  async updateCustomerProfileSchema(params) {
2960
3564
  const resp = await client.updateCustomerProfileSchema(
2961
3565
  create8(UpdateCustomerProfileSchemaRequestSchema, {
2962
- fields: params.fields.map(jsProfileFieldToProto),
3566
+ fields: params.fields.map((f) => ({
3567
+ id: f.id,
3568
+ key: f.key,
3569
+ type: f.type,
3570
+ label: f.label,
3571
+ required: f.required,
3572
+ helpText: f.helpText,
3573
+ placeholder: f.placeholder,
3574
+ config: f.config,
3575
+ // Per-field write/read principal policy (e.g. lock `plan` so a
3576
+ // customer can't self-grant); platform enforces on every write.
3577
+ access: f.access,
3578
+ queryable: f.queryable ?? false
3579
+ })),
2963
3580
  publicFields: params.publicFields,
2964
3581
  lookups: (params.lookups ?? []).map((l) => ({
2965
3582
  keyBy: l.keyBy,
@@ -2970,13 +3587,13 @@ function createSettingsMethods(client) {
2970
3587
  );
2971
3588
  return resp.schema ?? null;
2972
3589
  },
2973
- async publishProfileSchema() {
2974
- const resp = await client.publishProfileSchema(
2975
- create8(PublishProfileSchemaRequestSchema, {})
3590
+ async getEditorConfigs(modelKey) {
3591
+ const resp = await client.getEditorConfigs(
3592
+ create8(GetEditorConfigsRequestSchema, { modelKey })
2976
3593
  );
2977
- return resp.profileSchema ?? null;
3594
+ return resp.placements ?? [];
2978
3595
  },
2979
- // ── Design Tokens ─────────────────────────────────────────
3596
+ // ── Design Tokens ────────────────────────────────────────
2980
3597
  async getDesignTokens(params = {}) {
2981
3598
  const resp = await client.getDesignTokens(
2982
3599
  create8(GetDesignTokensRequestSchema, {
@@ -3009,16 +3626,29 @@ function createSettingsMethods(client) {
3009
3626
  );
3010
3627
  return resp.status ?? null;
3011
3628
  },
3012
- async getCustomerResolutionAttributes(customerId) {
3013
- return client.getCustomerResolutionAttributes(
3014
- create8(GetCustomerResolutionAttributesRequestSchema, { customerId })
3629
+ async scheduleDesignTokensPublish(params) {
3630
+ const resp = await client.scheduleDesignTokensPublish(
3631
+ create8(ScheduleDesignTokensPublishRequestSchema, {
3632
+ publishAt: timestampFromDate(params.publishAt),
3633
+ unpublishAt: params.unpublishAt ? timestampFromDate(params.unpublishAt) : void 0
3634
+ })
3015
3635
  );
3636
+ return resp.tokens ?? null;
3016
3637
  },
3017
- async getEditorConfigs(modelKey) {
3018
- const resp = await client.getEditorConfigs(
3019
- create8(GetEditorConfigsRequestSchema, { modelKey })
3638
+ async cancelScheduledDesignTokensPublish() {
3639
+ const resp = await client.cancelScheduledDesignTokensPublish(
3640
+ create8(CancelScheduledDesignTokensPublishRequestSchema, {})
3020
3641
  );
3021
- return resp.placements ?? [];
3642
+ return resp.tokens ?? null;
3643
+ },
3644
+ async countDesignTokenReferences(tokenPath) {
3645
+ const resp = await client.countDesignTokenReferences(
3646
+ create8(CountDesignTokenReferencesRequestSchema, { tokenPath })
3647
+ );
3648
+ return {
3649
+ paragraphCount: resp.paragraphCount,
3650
+ recordCount: resp.recordCount
3651
+ };
3022
3652
  },
3023
3653
  // ── Variant Catalog ──────────────────────────────────────
3024
3654
  async listVariantCatalog(params = {}) {
@@ -3026,7 +3656,9 @@ function createSettingsMethods(client) {
3026
3656
  create8(ListVariantCatalogRequestSchema, {
3027
3657
  where: params.where,
3028
3658
  first: params.first ?? DEFAULT_PAGE_SIZE,
3029
- after: params?.after
3659
+ after: params.after,
3660
+ last: params.last,
3661
+ before: params.before
3030
3662
  })
3031
3663
  );
3032
3664
  },
@@ -3076,7 +3708,9 @@ function createSettingsMethods(client) {
3076
3708
  create8(ListLocalesRequestSchema, {
3077
3709
  where: params.where,
3078
3710
  first: params.first ?? DEFAULT_PAGE_SIZE,
3079
- after: params?.after
3711
+ after: params.after,
3712
+ last: params.last,
3713
+ before: params.before
3080
3714
  })
3081
3715
  );
3082
3716
  },
@@ -3155,10 +3789,13 @@ function createSettingsMethods(client) {
3155
3789
  return resp.preferences ?? null;
3156
3790
  },
3157
3791
  // ── Recently Opened ─────────────────────────────────────
3158
- async listRecentlyOpened(first) {
3792
+ async listRecentlyOpened(params = {}) {
3159
3793
  const resp = await client.listRecentlyOpened(
3160
3794
  create8(ListRecentlyOpenedRequestSchema, {
3161
- first: first ?? 20
3795
+ first: params.first ?? 20,
3796
+ after: params.after,
3797
+ last: params.last,
3798
+ before: params.before
3162
3799
  })
3163
3800
  );
3164
3801
  return resp.items ?? [];
@@ -3188,11 +3825,215 @@ function createSettingsMethods(client) {
3188
3825
  create8(ClearRecentlyOpenedRequestSchema, {})
3189
3826
  );
3190
3827
  return resp.success;
3828
+ },
3829
+ // ── Schema publishing ─────────────────────────────────────
3830
+ async getProjectPublishStatus() {
3831
+ const resp = await client.getProjectPublishStatus(
3832
+ create8(GetProjectPublishStatusRequestSchema, {})
3833
+ );
3834
+ return {
3835
+ pending: resp.pending ?? [],
3836
+ breakingChanges: resp.breakingChanges ?? []
3837
+ };
3838
+ },
3839
+ async publishProjectSchema() {
3840
+ const resp = await client.publishProjectSchema(
3841
+ create8(PublishProjectSchemaRequestSchema, {})
3842
+ );
3843
+ return {
3844
+ modelsPublished: resp.modelsPublished,
3845
+ operationsPublished: resp.operationsPublished,
3846
+ contextDimensionsPublished: resp.contextDimensionsPublished,
3847
+ authProvidersPublished: resp.authProvidersPublished,
3848
+ profileSchemaPublished: resp.profileSchemaPublished,
3849
+ breakingChanges: resp.breakingChanges ?? []
3850
+ };
3851
+ },
3852
+ // Context dimension publish lifecycle.
3853
+ async publishContextDimension(id) {
3854
+ const resp = await client.publishContextDimension(
3855
+ create8(PublishContextDimensionRequestSchema, { id })
3856
+ );
3857
+ return {
3858
+ dimension: resp.dimension ?? null,
3859
+ breakingChanges: resp.breakingChanges ?? []
3860
+ };
3861
+ },
3862
+ async unpublishContextDimension(id) {
3863
+ const resp = await client.unpublishContextDimension(
3864
+ create8(UnpublishContextDimensionRequestSchema, { id })
3865
+ );
3866
+ return resp.dimension ?? null;
3867
+ },
3868
+ async getContextDimensionPublishStatus(id) {
3869
+ const resp = await client.getContextDimensionPublishStatus(
3870
+ create8(GetContextDimensionPublishStatusRequestSchema, { id })
3871
+ );
3872
+ return resp.status ?? null;
3873
+ },
3874
+ async scheduleContextDimensionPublish(id, publishAt, unpublishAt) {
3875
+ const resp = await client.scheduleContextDimensionPublish(
3876
+ create8(ScheduleContextDimensionPublishRequestSchema, {
3877
+ id,
3878
+ publishAt: timestampFromDate(publishAt),
3879
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
3880
+ })
3881
+ );
3882
+ return resp.dimension ?? null;
3883
+ },
3884
+ async cancelScheduledContextDimensionPublish(id) {
3885
+ const resp = await client.cancelScheduledContextDimensionPublish(
3886
+ create8(CancelScheduledContextDimensionPublishRequestSchema, { id })
3887
+ );
3888
+ return resp.dimension ?? null;
3889
+ },
3890
+ // Context dimension version history.
3891
+ async listContextDimensionVersions(contextDimensionId, params = {}) {
3892
+ const resp = await client.listContextDimensionVersions(
3893
+ create8(ListContextDimensionVersionsRequestSchema, {
3894
+ contextDimensionId,
3895
+ first: params.first ?? DEFAULT_PAGE_SIZE,
3896
+ after: params.after,
3897
+ last: params.last,
3898
+ before: params.before
3899
+ })
3900
+ );
3901
+ return {
3902
+ items: resp.versions ?? [],
3903
+ total: resp.total,
3904
+ pageInfo: toPageInfo(resp.pageInfo),
3905
+ cursors: resp.cursors ?? []
3906
+ };
3907
+ },
3908
+ async getContextDimensionVersion(versionId) {
3909
+ const resp = await client.getContextDimensionVersion(
3910
+ create8(GetContextDimensionVersionRequestSchema, { id: versionId })
3911
+ );
3912
+ return resp.version ?? null;
3913
+ },
3914
+ async restoreContextDimensionVersion(versionId, changeDescription) {
3915
+ const resp = await client.restoreContextDimensionVersion(
3916
+ create8(RestoreContextDimensionVersionRequestSchema, {
3917
+ versionId,
3918
+ changeDescription
3919
+ })
3920
+ );
3921
+ return {
3922
+ dimension: resp.dimension ?? null,
3923
+ newVersion: resp.newVersion ?? null
3924
+ };
3925
+ },
3926
+ // Profile schema publish lifecycle (project-scoped, no entity id).
3927
+ async publishProfileSchema() {
3928
+ const resp = await client.publishProfileSchema(
3929
+ create8(PublishProfileSchemaRequestSchema, {})
3930
+ );
3931
+ return {
3932
+ profileSchema: resp.profileSchema ?? null,
3933
+ breakingChanges: resp.breakingChanges ?? []
3934
+ };
3935
+ },
3936
+ async unpublishProfileSchema() {
3937
+ const resp = await client.unpublishProfileSchema(
3938
+ create8(UnpublishProfileSchemaRequestSchema, {})
3939
+ );
3940
+ return resp.profileSchema ?? null;
3941
+ },
3942
+ async getProfileSchemaPublishStatus() {
3943
+ const resp = await client.getProfileSchemaPublishStatus(
3944
+ create8(GetProfileSchemaPublishStatusRequestSchema, {})
3945
+ );
3946
+ return resp.status ?? null;
3947
+ },
3948
+ async scheduleProfileSchemaPublish(publishAt, unpublishAt) {
3949
+ const resp = await client.scheduleProfileSchemaPublish(
3950
+ create8(ScheduleProfileSchemaPublishRequestSchema, {
3951
+ publishAt: timestampFromDate(publishAt),
3952
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
3953
+ })
3954
+ );
3955
+ return resp.profileSchema ?? null;
3956
+ },
3957
+ async cancelScheduledProfileSchemaPublish() {
3958
+ const resp = await client.cancelScheduledProfileSchemaPublish(
3959
+ create8(CancelScheduledProfileSchemaPublishRequestSchema, {})
3960
+ );
3961
+ return resp.profileSchema ?? null;
3962
+ },
3963
+ // Profile schema version history (project-scoped, no entity id).
3964
+ async listProfileSchemaVersions(params = {}) {
3965
+ const resp = await client.listProfileSchemaVersions(
3966
+ create8(ListProfileSchemaVersionsRequestSchema, {
3967
+ first: params.first ?? DEFAULT_PAGE_SIZE,
3968
+ after: params.after,
3969
+ last: params.last,
3970
+ before: params.before
3971
+ })
3972
+ );
3973
+ return {
3974
+ items: resp.versions ?? [],
3975
+ total: resp.total,
3976
+ pageInfo: toPageInfo(resp.pageInfo),
3977
+ cursors: resp.cursors ?? []
3978
+ };
3979
+ },
3980
+ async getProfileSchemaVersion(versionId) {
3981
+ const resp = await client.getProfileSchemaVersion(
3982
+ create8(GetProfileSchemaVersionRequestSchema, { id: versionId })
3983
+ );
3984
+ return resp.version ?? null;
3985
+ },
3986
+ async restoreProfileSchemaVersion(versionId, changeDescription) {
3987
+ const resp = await client.restoreProfileSchemaVersion(
3988
+ create8(RestoreProfileSchemaVersionRequestSchema, {
3989
+ versionId,
3990
+ changeDescription
3991
+ })
3992
+ );
3993
+ return {
3994
+ schema: resp.schema ?? null,
3995
+ newVersion: resp.newVersion ?? null
3996
+ };
3997
+ },
3998
+ // Design token version history (project-scoped, no entity id).
3999
+ async listDesignTokenVersions(params = {}) {
4000
+ const resp = await client.listDesignTokenVersions(
4001
+ create8(ListDesignTokenVersionsRequestSchema, {
4002
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4003
+ after: params.after,
4004
+ last: params.last,
4005
+ before: params.before
4006
+ })
4007
+ );
4008
+ return {
4009
+ items: resp.versions ?? [],
4010
+ total: resp.total,
4011
+ pageInfo: toPageInfo(resp.pageInfo),
4012
+ cursors: resp.cursors ?? []
4013
+ };
4014
+ },
4015
+ async getDesignTokenVersion(versionId) {
4016
+ const resp = await client.getDesignTokenVersion(
4017
+ create8(GetDesignTokenVersionRequestSchema, { id: versionId })
4018
+ );
4019
+ return resp.version ?? null;
4020
+ },
4021
+ async restoreDesignTokenVersion(versionId, changeDescription) {
4022
+ const resp = await client.restoreDesignTokenVersion(
4023
+ create8(RestoreDesignTokenVersionRequestSchema, {
4024
+ versionId,
4025
+ changeDescription
4026
+ })
4027
+ );
4028
+ return {
4029
+ tokens: resp.tokens ?? null,
4030
+ newVersion: resp.newVersion ?? null
4031
+ };
3191
4032
  }
3192
4033
  };
3193
4034
  }
3194
4035
 
3195
- // ../../packages/rpc-node/src/rpc/storage.ts
4036
+ // ../../packages/rpc-core/src/storage.ts
3196
4037
  import { create as create9 } from "@bufbuild/protobuf";
3197
4038
  function createStorageMethods(client) {
3198
4039
  return {
@@ -3202,7 +4043,8 @@ function createStorageMethods(client) {
3202
4043
  filename: params.filename,
3203
4044
  mimeType: params.mimeType,
3204
4045
  size: BigInt(params.size),
3205
- folder: params.folder
4046
+ folder: params.folder,
4047
+ metadata: params.metadata
3206
4048
  })
3207
4049
  );
3208
4050
  },
@@ -3221,8 +4063,11 @@ function createStorageMethods(client) {
3221
4063
  create9(ListFilesRequestSchema, {
3222
4064
  where: params.where,
3223
4065
  includeDeleted: params.includeDeleted ?? false,
4066
+ onlyDeleted: params.onlyDeleted ?? false,
3224
4067
  first: params.first ?? DEFAULT_PAGE_SIZE,
3225
- after: params?.after
4068
+ after: params.after,
4069
+ last: params.last,
4070
+ before: params.before
3226
4071
  })
3227
4072
  );
3228
4073
  },
@@ -3274,6 +4119,10 @@ function createStorageMethods(client) {
3274
4119
  );
3275
4120
  return resp.file ?? null;
3276
4121
  },
4122
+ async emptyTrash() {
4123
+ const resp = await client.emptyTrash(create9(EmptyTrashRequestSchema, {}));
4124
+ return { deleted: resp.deleted, freedBytes: resp.freedBytes };
4125
+ },
3277
4126
  async trackFileUsage(fileId, entityType) {
3278
4127
  const resp = await client.trackFileUsage(
3279
4128
  create9(TrackFileUsageRequestSchema, { fileId, entityType })
@@ -3286,36 +4135,52 @@ function createStorageMethods(client) {
3286
4135
  );
3287
4136
  return resp.success;
3288
4137
  },
3289
- // Documented Stage-9 exception: CleanupOrphanedFiles is a write-batch
3290
- // ceiling, not list pagination, so it keeps `limit` rather than `first`.
3291
4138
  async cleanupOrphanedFiles(params) {
3292
4139
  return client.cleanupOrphanedFiles(
3293
4140
  create9(CleanupOrphanedFilesRequestSchema, {
3294
4141
  orphanThresholdDays: params?.orphanThresholdDays ?? 30,
3295
4142
  dryRun: params?.dryRun ?? false,
3296
- limit: params?.limit ?? 100
4143
+ limit: params?.limit ?? 100,
4144
+ trashRetentionDays: params?.trashRetentionDays ?? 0
3297
4145
  })
3298
4146
  );
4147
+ },
4148
+ async retryFileGeneration(fileId, asset) {
4149
+ const resp = await client.retryFileGeneration(
4150
+ create9(RetryFileGenerationRequestSchema, { fileId, asset })
4151
+ );
4152
+ return resp.file ?? null;
3299
4153
  }
3300
4154
  };
3301
4155
  }
3302
4156
 
3303
- // ../../packages/rpc-node/src/rpc/operations.ts
4157
+ // ../../packages/rpc-core/src/operations.ts
3304
4158
  import { create as create10 } from "@bufbuild/protobuf";
3305
4159
  function toOperationKind(kind) {
3306
4160
  if (kind === "query") return OperationKind.QUERY;
3307
4161
  if (kind === "field") return OperationKind.FIELD;
3308
4162
  return OperationKind.MUTATION;
3309
4163
  }
4164
+ var decoder = new TextDecoder();
4165
+ function parseBytes(data) {
4166
+ if (!data || data.length === 0) return void 0;
4167
+ try {
4168
+ return JSON.parse(decoder.decode(data));
4169
+ } catch {
4170
+ return void 0;
4171
+ }
4172
+ }
3310
4173
  function createOperationsMethods(client) {
3311
4174
  return {
3312
4175
  // ── CRUD ──────────────────────────────────────────────────
3313
4176
  async listOperations(params = {}) {
3314
4177
  return client.listOperations(
3315
- create10(ListOperationsRequestSchema2, {
4178
+ create10(ListOperationsRequestSchema, {
3316
4179
  where: params.where,
3317
4180
  first: params.first ?? DEFAULT_PAGE_SIZE,
3318
- after: params?.after
4181
+ after: params.after,
4182
+ last: params.last,
4183
+ before: params.before
3319
4184
  })
3320
4185
  );
3321
4186
  },
@@ -3337,15 +4202,18 @@ function createOperationsMethods(client) {
3337
4202
  description: params.description,
3338
4203
  icon: params.icon,
3339
4204
  category: params.category,
4205
+ endpointAuth: params.endpointAuth,
3340
4206
  timeoutMs: params.timeoutMs,
3341
4207
  inputSchema: params.inputSchema,
3342
4208
  outputSchema: params.outputSchema,
4209
+ ui: params.ui,
4210
+ configId: params.configId,
3343
4211
  quotas: params.quotas,
4212
+ precondition: params.precondition,
4213
+ allowedRoles: params.allowedRoles,
3344
4214
  retryPolicy: params.retryPolicy,
3345
4215
  callbackTimeoutRetryPolicy: params.callbackTimeoutRetryPolicy,
3346
- allowedRoles: params.allowedRoles ?? [],
3347
- precondition: params.precondition,
3348
- configId: params.configId,
4216
+ isActive: params.isActive,
3349
4217
  supportsAsync: params.supportsAsync,
3350
4218
  callbackTtlSeconds: params.callbackTtlSeconds,
3351
4219
  capabilities: params.capabilities ?? [],
@@ -3367,14 +4235,17 @@ function createOperationsMethods(client) {
3367
4235
  name: params.name,
3368
4236
  description: params.description,
3369
4237
  endpoint: params.endpoint,
4238
+ endpointAuth: params.endpointAuth,
3370
4239
  timeoutMs: params.timeoutMs,
3371
4240
  inputSchema: params.inputSchema,
3372
4241
  outputSchema: params.outputSchema,
4242
+ ui: params.ui,
4243
+ isActive: params.isActive,
3373
4244
  quotas: params.quotas,
4245
+ precondition: params.precondition,
3374
4246
  retryPolicy: params.retryPolicy,
3375
4247
  callbackTimeoutRetryPolicy: params.callbackTimeoutRetryPolicy,
3376
- precondition: params.precondition,
3377
- isActive: params.isActive,
4248
+ allowedRoles: params.allowedRoles,
3378
4249
  supportsAsync: params.supportsAsync,
3379
4250
  callbackTtlSeconds: params.callbackTtlSeconds,
3380
4251
  capabilities: params.capabilities,
@@ -3387,30 +4258,92 @@ function createOperationsMethods(client) {
3387
4258
  responseTransform: params.responseTransform
3388
4259
  })
3389
4260
  );
3390
- return resp.operation ?? null;
3391
- },
3392
- async deleteOperation(id) {
3393
- const resp = await client.deleteOperation(
3394
- create10(DeleteOperationRequestSchema, { id })
3395
- );
3396
- return resp.success;
4261
+ return resp.operation ?? null;
4262
+ },
4263
+ async deleteOperation(id) {
4264
+ const resp = await client.deleteOperation(
4265
+ create10(DeleteOperationRequestSchema, { id })
4266
+ );
4267
+ return resp.success;
4268
+ },
4269
+ // ── Execution ─────────────────────────────────────────────
4270
+ async executeOperation(params) {
4271
+ const resp = await client.executeOperation(
4272
+ create10(ExecuteOperationRequestSchema, {
4273
+ operationKey: params.operationKey,
4274
+ input: params.input,
4275
+ triggerType: params.triggerType,
4276
+ triggerContext: params.triggerContext,
4277
+ customerId: params.customerId,
4278
+ record: params.record,
4279
+ content: params.content,
4280
+ // Default to SYNC — the platform rejects requests without a mode.
4281
+ // Most admin-triggered calls (UI operations) want a response,
4282
+ // so SYNC is the sensible default.
4283
+ mode: params.mode ?? ExecutionMode.SYNC
4284
+ })
4285
+ );
4286
+ const exec = resp.execution;
4287
+ if (!exec) return null;
4288
+ return {
4289
+ ...exec,
4290
+ result: parseBytes(resp.resultJson) ?? parseBytes(exec.resultJson),
4291
+ error: resp.errorMessage ? { message: resp.errorMessage } : parseBytes(exec.errorJson),
4292
+ completed: resp.completed
4293
+ };
4294
+ },
4295
+ async listOperationExecutions(params = {}) {
4296
+ return client.listOperationExecutions(
4297
+ create10(ListOperationExecutionsRequestSchema, {
4298
+ where: params.where,
4299
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4300
+ after: params.after,
4301
+ last: params.last,
4302
+ before: params.before
4303
+ })
4304
+ );
3397
4305
  },
3398
- async getSigningSecret() {
3399
- const resp = await client.getSigningSecret(
3400
- create10(GetSigningSecretRequestSchema, {})
4306
+ async getOperationExecutionStats(operationKey) {
4307
+ const resp = await client.getOperationExecutionStats(
4308
+ create10(GetOperationExecutionStatsRequestSchema, {
4309
+ operationKey
4310
+ })
3401
4311
  );
3402
- return { secret: resp.secret, prefix: resp.prefix };
4312
+ return resp.stats ?? [];
3403
4313
  },
3404
- // ── Execution ─────────────────────────────────────────────
3405
- async executeOperation(params) {
3406
- return client.executeOperation(
3407
- create10(ExecuteOperationRequestSchema, {
4314
+ /**
4315
+ * Cancel an in-flight execution (status ∈ pending|dispatched|running).
4316
+ * Idempotent: returns {success: true, status: 'cancelled'} on a row we
4317
+ * just cancelled OR one already in the cancelled state. Other terminal
4318
+ * states return success=false with the actual status so the caller can
4319
+ * surface "already completed" vs "already cancelled" distinctly.
4320
+ */
4321
+ async cancelOperationExecution(id) {
4322
+ const resp = await client.cancelOperationExecution(
4323
+ create10(CancelOperationExecutionRequestSchema, { id })
4324
+ );
4325
+ return { success: resp.success, status: resp.status ?? "" };
4326
+ },
4327
+ /**
4328
+ * Cancel every non-terminal execution of an operation key. Used by the
4329
+ * "Cancel all in-flight" affordance on the operation detail page so an
4330
+ * operator can stop a misbehaving extension without clicking through
4331
+ * each row individually.
4332
+ *
4333
+ * When `statuses` is omitted, the server cancels the default set
4334
+ * (pending, dispatched, running). Pass a narrower list to scope further.
4335
+ */
4336
+ async cancelOperationExecutions(params) {
4337
+ const resp = await client.cancelOperationExecutions(
4338
+ create10(CancelOperationExecutionsRequestSchema, {
3408
4339
  operationKey: params.operationKey,
3409
- input: params.input,
3410
- triggerType: params.triggerType,
3411
- customerId: params.customerId
4340
+ statuses: params.statuses ?? []
3412
4341
  })
3413
4342
  );
4343
+ return {
4344
+ cancelledCount: resp.cancelledCount,
4345
+ cancelledIds: resp.cancelledIds ?? []
4346
+ };
3414
4347
  },
3415
4348
  // ── Dead Letter Queue ─────────────────────────────────────
3416
4349
  async listDeadLetterEntries(params = {}) {
@@ -3418,7 +4351,9 @@ function createOperationsMethods(client) {
3418
4351
  create10(ListDeadLetterEntriesRequestSchema, {
3419
4352
  where: params.where,
3420
4353
  first: params.first ?? DEFAULT_PAGE_SIZE,
3421
- after: params?.after
4354
+ after: params.after,
4355
+ last: params.last,
4356
+ before: params.before
3422
4357
  })
3423
4358
  );
3424
4359
  },
@@ -3434,16 +4369,150 @@ function createOperationsMethods(client) {
3434
4369
  );
3435
4370
  return resp.success;
3436
4371
  },
4372
+ async bulkDismissDeadLetters(params) {
4373
+ const resp = await client.bulkDismissDeadLetters(
4374
+ create10(BulkDismissDeadLettersRequestSchema, { ids: params.ids })
4375
+ );
4376
+ return { dismissedCount: resp.dismissedCount };
4377
+ },
4378
+ async bulkRetryDeadLetters(params) {
4379
+ const resp = await client.bulkRetryDeadLetters(
4380
+ create10(BulkRetryDeadLettersRequestSchema, { ids: params.ids })
4381
+ );
4382
+ return { retriedCount: resp.retriedCount };
4383
+ },
4384
+ async dismissAllPendingDeadLetters(params = {}) {
4385
+ const resp = await client.dismissAllPendingDeadLetters(
4386
+ create10(DismissAllPendingDeadLettersRequestSchema, {
4387
+ operationKey: params.operationKey
4388
+ })
4389
+ );
4390
+ return { dismissedCount: resp.dismissedCount };
4391
+ },
4392
+ async listDeadLetterOperationKeys(params = {}) {
4393
+ return client.listDeadLetterOperationKeys(
4394
+ create10(ListDeadLetterOperationKeysRequestSchema, {
4395
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4396
+ after: params.after,
4397
+ last: params.last,
4398
+ before: params.before
4399
+ })
4400
+ );
4401
+ },
4402
+ async getDeadLetterStats() {
4403
+ const resp = await client.getDeadLetterStats(
4404
+ create10(GetDeadLetterStatsRequestSchema, {})
4405
+ );
4406
+ return resp.stats ?? null;
4407
+ },
4408
+ // ── Circuit Breakers ──────────────────────────────────────
4409
+ async listCircuitStates(params = {}) {
4410
+ return client.listCircuitStates(
4411
+ create10(ListCircuitStatesRequestSchema, {
4412
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4413
+ after: params.after,
4414
+ last: params.last,
4415
+ before: params.before
4416
+ })
4417
+ );
4418
+ },
4419
+ async resetCircuit(operationKey) {
4420
+ const resp = await client.resetCircuit(
4421
+ create10(ResetCircuitRequestSchema, { operationKey })
4422
+ );
4423
+ return resp.success;
4424
+ },
4425
+ // ── Signing ───────────────────────────────────────────────
4426
+ async getSigningSecret() {
4427
+ const resp = await client.getSigningSecret(
4428
+ create10(GetSigningSecretRequestSchema, {})
4429
+ );
4430
+ return { secret: resp.secret, prefix: resp.prefix };
4431
+ },
4432
+ async regenerateSigningSecret() {
4433
+ const resp = await client.regenerateSigningSecret(
4434
+ create10(RegenerateSigningSecretRequestSchema, {})
4435
+ );
4436
+ return { secret: resp.secret };
4437
+ },
4438
+ // ── Versioning ────────────────────────────────────────────
4439
+ async listOperationVersions(operationId, params = {}) {
4440
+ const resp = await client.listOperationVersions(
4441
+ create10(ListOperationVersionsRequestSchema, {
4442
+ operationId,
4443
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4444
+ after: params.after,
4445
+ last: params.last,
4446
+ before: params.before
4447
+ })
4448
+ );
4449
+ return {
4450
+ items: resp.versions ?? [],
4451
+ total: resp.total,
4452
+ pageInfo: toPageInfo(resp.pageInfo),
4453
+ cursors: resp.cursors ?? []
4454
+ };
4455
+ },
4456
+ async getOperationVersion(versionId) {
4457
+ const resp = await client.getOperationVersion(
4458
+ create10(GetOperationVersionRequestSchema, { id: versionId })
4459
+ );
4460
+ return resp.version ?? null;
4461
+ },
4462
+ async restoreOperationVersion(versionId, changeDescription) {
4463
+ const resp = await client.restoreOperationVersion(
4464
+ create10(RestoreOperationVersionRequestSchema, {
4465
+ versionId,
4466
+ changeDescription
4467
+ })
4468
+ );
4469
+ return {
4470
+ operation: resp.operation ?? null,
4471
+ newVersion: resp.newVersion ?? null
4472
+ };
4473
+ },
4474
+ // ── Schema publish lifecycle ──────────────────────────────
3437
4475
  async publishOperation(id) {
3438
4476
  const resp = await client.publishOperation(
3439
4477
  create10(PublishOperationRequestSchema, { id })
3440
4478
  );
4479
+ return {
4480
+ operation: resp.operation ?? null,
4481
+ breakingChanges: resp.breakingChanges ?? []
4482
+ };
4483
+ },
4484
+ async unpublishOperation(id) {
4485
+ const resp = await client.unpublishOperation(
4486
+ create10(UnpublishOperationRequestSchema, { id })
4487
+ );
4488
+ return resp.operation ?? null;
4489
+ },
4490
+ async getOperationPublishStatus(id) {
4491
+ const resp = await client.getOperationPublishStatus(
4492
+ create10(GetOperationPublishStatusRequestSchema, { id })
4493
+ );
4494
+ return resp.status ?? null;
4495
+ },
4496
+ async scheduleOperationPublish(id, publishAt, unpublishAt) {
4497
+ const resp = await client.scheduleOperationPublish(
4498
+ create10(ScheduleOperationPublishRequestSchema, {
4499
+ id,
4500
+ publishAt: timestampFromDate(publishAt),
4501
+ unpublishAt: unpublishAt ? timestampFromDate(unpublishAt) : void 0
4502
+ })
4503
+ );
4504
+ return resp.operation ?? null;
4505
+ },
4506
+ async cancelScheduledOperationPublish(id) {
4507
+ const resp = await client.cancelScheduledOperationPublish(
4508
+ create10(CancelScheduledOperationPublishRequestSchema, { id })
4509
+ );
3441
4510
  return resp.operation ?? null;
3442
4511
  }
3443
4512
  };
3444
4513
  }
3445
4514
 
3446
- // ../../packages/rpc-node/src/rpc/hooks.ts
4515
+ // ../../packages/rpc-core/src/hooks.ts
3447
4516
  import { create as create11 } from "@bufbuild/protobuf";
3448
4517
  function createHooksMethods(client) {
3449
4518
  return {
@@ -3453,7 +4522,9 @@ function createHooksMethods(client) {
3453
4522
  create11(ListHooksRequestSchema, {
3454
4523
  where: params.where,
3455
4524
  first: params.first ?? DEFAULT_PAGE_SIZE,
3456
- after: params?.after
4525
+ after: params.after,
4526
+ last: params.last,
4527
+ before: params.before
3457
4528
  })
3458
4529
  );
3459
4530
  },
@@ -3505,13 +4576,15 @@ function createHooksMethods(client) {
3505
4576
  );
3506
4577
  return resp.hook ?? null;
3507
4578
  },
3508
- // ── Deliveries ──────────────────────────────────────────
4579
+ // ── Deliveries ───────────────────────────────────────────
3509
4580
  async listHookDeliveries(params = {}) {
3510
4581
  return client.listHookDeliveries(
3511
4582
  create11(ListHookDeliveriesRequestSchema, {
3512
4583
  where: params.where,
3513
4584
  first: params.first ?? DEFAULT_PAGE_SIZE,
3514
- after: params?.after
4585
+ after: params.after,
4586
+ last: params.last,
4587
+ before: params.before
3515
4588
  })
3516
4589
  );
3517
4590
  },
@@ -3521,7 +4594,7 @@ function createHooksMethods(client) {
3521
4594
  );
3522
4595
  return resp.success;
3523
4596
  },
3524
- // ── Testing ─────────────────────────────────────────────
4597
+ // ── Testing ──────────────────────────────────────────────
3525
4598
  async testHook(params) {
3526
4599
  const resp = await client.testHook(
3527
4600
  create11(TestHookRequestSchema, {
@@ -3537,32 +4610,145 @@ function createHooksMethods(client) {
3537
4610
  };
3538
4611
  }
3539
4612
 
3540
- // ../../packages/rpc-node/src/rpc/notifications.ts
4613
+ // ../../packages/rpc-core/src/notifications.ts
3541
4614
  import { create as create12 } from "@bufbuild/protobuf";
4615
+ var NOTIFICATION_TYPE_TO_PROTO = {
4616
+ JOB_COMPLETED: NotificationType.JOB_COMPLETED,
4617
+ JOB_FAILED: NotificationType.JOB_FAILED,
4618
+ JOB_PROGRESS: NotificationType.JOB_PROGRESS,
4619
+ MENTION: NotificationType.MENTION,
4620
+ NOTE_REPLY: NotificationType.NOTE_REPLY,
4621
+ NOTE_RESOLVED: NotificationType.NOTE_RESOLVED,
4622
+ SYSTEM: NotificationType.SYSTEM,
4623
+ ANNOUNCEMENT: NotificationType.ANNOUNCEMENT
4624
+ };
4625
+ function buildNotificationChannels(p) {
4626
+ const channels = {};
4627
+ const push = {};
4628
+ if (p.deepLink) push.deep_link = p.deepLink;
4629
+ if (p.threadId) push.thread_id = p.threadId;
4630
+ if (p.badge !== void 0) push.badge = p.badge;
4631
+ if (p.pushData) push.data = p.pushData;
4632
+ if (Object.keys(push).length > 0) channels.push = push;
4633
+ const email = {};
4634
+ if (p.emailSubject) email.subject = p.emailSubject;
4635
+ if (p.emailBody) email.body = p.emailBody;
4636
+ if (p.emailReplyTo) email.reply_to = p.emailReplyTo;
4637
+ if (p.emailCtas && p.emailCtas.length > 0) {
4638
+ email.ctas = p.emailCtas.map((c) => ({ label: c.label, url: c.url }));
4639
+ }
4640
+ if (Object.keys(email).length > 0) channels.email = email;
4641
+ return channels;
4642
+ }
3542
4643
  function createNotificationsMethods(client) {
3543
4644
  return {
4645
+ // ── Queries ──────────────────────────────────────────────
3544
4646
  async listNotifications(params = {}) {
3545
4647
  return client.listNotifications(
3546
4648
  create12(ListNotificationsRequestSchema, {
3547
4649
  where: params.where,
3548
- first: params.first ?? 20,
3549
- after: params?.after
4650
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4651
+ after: params.after,
4652
+ last: params.last,
4653
+ before: params.before
3550
4654
  })
3551
4655
  );
3552
4656
  },
4657
+ async getUnreadCount() {
4658
+ const resp = await client.getUnreadCount(
4659
+ create12(GetUnreadCountRequestSchema, {})
4660
+ );
4661
+ return resp.count;
4662
+ },
4663
+ // ── Mutations ────────────────────────────────────────────
3553
4664
  async markNotificationRead(id) {
3554
4665
  const resp = await client.markNotificationRead(
3555
4666
  create12(MarkNotificationReadRequestSchema, { id })
3556
4667
  );
3557
4668
  return resp.success;
3558
4669
  },
3559
- async markAllNotificationsRead() {
4670
+ async markAllNotificationsRead(type) {
3560
4671
  const resp = await client.markAllNotificationsRead(
3561
- create12(MarkAllNotificationsReadRequestSchema, {})
4672
+ create12(MarkAllNotificationsReadRequestSchema, {
4673
+ type: type ? NOTIFICATION_TYPE_TO_PROTO[type] : void 0
4674
+ })
4675
+ );
4676
+ return resp.count;
4677
+ },
4678
+ async deleteNotification(id) {
4679
+ const resp = await client.deleteNotification(
4680
+ create12(DeleteNotificationRequestSchema, { id })
4681
+ );
4682
+ return resp.success;
4683
+ },
4684
+ // ── Announcements ────────────────────────────────────────
4685
+ async sendAnnouncement(params) {
4686
+ const resp = await client.sendAnnouncement(
4687
+ create12(SendAnnouncementRequestSchema, {
4688
+ title: params.title,
4689
+ message: params.message,
4690
+ actionUrl: params.actionUrl,
4691
+ targetType: params.targetType,
4692
+ targetIds: params.targetIds ?? []
4693
+ })
4694
+ );
4695
+ return resp.notification ?? null;
4696
+ },
4697
+ async listAnnouncementHistory(params = {}) {
4698
+ return client.listAnnouncementHistory(
4699
+ create12(ListAnnouncementHistoryRequestSchema, {
4700
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4701
+ after: params.after,
4702
+ last: params.last,
4703
+ before: params.before
4704
+ })
4705
+ );
4706
+ },
4707
+ // ── Customer Notifications ────────────────────────────────
4708
+ async listCustomerNotifications(params = {}) {
4709
+ return client.listCustomerNotifications(
4710
+ create12(ListCustomerNotificationsRequestSchema, {
4711
+ where: params.where,
4712
+ first: params.first ?? DEFAULT_PAGE_SIZE,
4713
+ after: params.after,
4714
+ last: params.last,
4715
+ before: params.before
4716
+ })
4717
+ );
4718
+ },
4719
+ async sendCustomerNotification(params) {
4720
+ const resp = await client.sendCustomerNotification(
4721
+ create12(SendCustomerNotificationRequestSchema, {
4722
+ customerId: params.customerId,
4723
+ title: params.title,
4724
+ message: params.message,
4725
+ category: params.category,
4726
+ actionUrl: params.actionUrl,
4727
+ metadata: params.metadata,
4728
+ imageUrl: params.imageUrl,
4729
+ expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
4730
+ channels: buildNotificationChannels(params)
4731
+ })
4732
+ );
4733
+ return resp.notification ?? null;
4734
+ },
4735
+ async sendBulkCustomerNotification(params) {
4736
+ const resp = await client.sendBulkCustomerNotification(
4737
+ create12(SendBulkCustomerNotificationRequestSchema, {
4738
+ customerIds: params.customerIds,
4739
+ title: params.title,
4740
+ message: params.message,
4741
+ category: params.category,
4742
+ actionUrl: params.actionUrl,
4743
+ metadata: params.metadata,
4744
+ imageUrl: params.imageUrl,
4745
+ expiresAt: params.expiresAt ? timestampFromDate(params.expiresAt) : void 0,
4746
+ channels: buildNotificationChannels(params)
4747
+ })
3562
4748
  );
3563
4749
  return resp.count;
3564
4750
  },
3565
- // ── Push Credentials ────────────────────────────────────────
4751
+ // ── Push Credentials (admin) ─────────────────────────────
3566
4752
  async listPushCredentials(params) {
3567
4753
  return client.listPushCredentials(
3568
4754
  create12(ListPushCredentialsRequestSchema, {
@@ -3591,7 +4777,7 @@ function createNotificationsMethods(client) {
3591
4777
  );
3592
4778
  return resp.success;
3593
4779
  },
3594
- // ── Device Tokens ────────────────────────────────────────────
4780
+ // ── Device Tokens (customer apps) ─────────────────────────
3595
4781
  async registerDeviceToken(params) {
3596
4782
  const resp = await client.registerDeviceToken(
3597
4783
  create12(RegisterDeviceTokenRequestSchema, {
@@ -3608,31 +4794,11 @@ function createNotificationsMethods(client) {
3608
4794
  create12(UnregisterDeviceTokenRequestSchema, { token })
3609
4795
  );
3610
4796
  return resp.success;
3611
- },
3612
- // ── Customer Notifications ───────────────────────────────────
3613
- async sendCustomerNotification(params) {
3614
- const resp = await client.sendCustomerNotification(
3615
- create12(SendCustomerNotificationRequestSchema, {
3616
- customerId: params.customerId,
3617
- title: params.title,
3618
- message: params.message,
3619
- category: params.category,
3620
- actionUrl: params.actionUrl,
3621
- deepLink: params.deepLink,
3622
- badge: params.badge,
3623
- threadId: params.threadId,
3624
- emailSubject: params.emailSubject,
3625
- emailBody: params.emailBody,
3626
- emailReplyTo: params.emailReplyTo,
3627
- emailCtas: params.emailCtas
3628
- })
3629
- );
3630
- return resp.notification ?? null;
3631
4797
  }
3632
4798
  };
3633
4799
  }
3634
4800
 
3635
- // ../../packages/rpc-node/src/rpc/cron-schedules.ts
4801
+ // ../../packages/rpc-core/src/cron-schedules.ts
3636
4802
  import { create as create13 } from "@bufbuild/protobuf";
3637
4803
  function createCronSchedulesMethods(client) {
3638
4804
  return {
@@ -3642,7 +4808,9 @@ function createCronSchedulesMethods(client) {
3642
4808
  create13(ListCronSchedulesRequestSchema, {
3643
4809
  where: params.where,
3644
4810
  first: params.first ?? DEFAULT_PAGE_SIZE,
3645
- after: params?.after
4811
+ after: params.after,
4812
+ last: params.last,
4813
+ before: params.before
3646
4814
  })
3647
4815
  );
3648
4816
  },
@@ -3714,9 +4882,8 @@ function createCronSchedulesMethods(client) {
3714
4882
  };
3715
4883
  }
3716
4884
 
3717
- // ../../packages/rpc-node/src/rpc/publish-batches.ts
4885
+ // ../../packages/rpc-core/src/publish-batches.ts
3718
4886
  import { create as create14 } from "@bufbuild/protobuf";
3719
- import { timestampFromDate } from "@bufbuild/protobuf/wkt";
3720
4887
  function createPublishBatchesMethods(client) {
3721
4888
  return {
3722
4889
  async listPublishBatches(params = {}) {
@@ -3724,7 +4891,9 @@ function createPublishBatchesMethods(client) {
3724
4891
  create14(ListPublishBatchesRequestSchema, {
3725
4892
  where: params.where,
3726
4893
  first: params.first ?? DEFAULT_PAGE_SIZE,
3727
- after: params?.after
4894
+ after: params.after,
4895
+ last: params.last,
4896
+ before: params.before
3728
4897
  })
3729
4898
  );
3730
4899
  return { batches: resp.batches ?? [], total: resp.total };
@@ -3835,36 +5004,39 @@ function createPublishBatchesMethods(client) {
3835
5004
  };
3836
5005
  }
3837
5006
 
3838
- // ../../packages/rpc-node/src/rpc/secrets.ts
5007
+ // ../../packages/rpc-core/src/secrets.ts
3839
5008
  import { create as create15 } from "@bufbuild/protobuf";
3840
- function createSecretsMethods(client) {
5009
+ function createSecretsMethods(secretsClient, appInstallClient) {
3841
5010
  return {
5011
+ // ── Generic SecretsService surface (used by project-level browser) ──
3842
5012
  async put(args) {
3843
- const resp = await client.putSecret(
5013
+ const resp = await secretsClient.putSecret(
3844
5014
  create15(PutSecretRequestSchema, {
3845
5015
  tenantId: args.tenantId,
3846
5016
  projectId: args.projectId,
3847
5017
  ownerKind: args.ownerKind,
3848
5018
  ownerId: args.ownerId ?? "",
3849
5019
  label: args.label ?? "",
3850
- plaintext: args.plaintext
5020
+ plaintext: args.plaintext,
5021
+ expiresAt: args.expiresAt ? timestampFromDate(args.expiresAt) : void 0
3851
5022
  })
3852
5023
  );
3853
5024
  return resp.ref;
3854
5025
  },
3855
5026
  async get(ref, purpose) {
3856
- return client.getSecret(
5027
+ return secretsClient.getSecret(
3857
5028
  create15(GetSecretRequestSchema, { ref, purpose: purpose ?? "" })
3858
5029
  );
3859
5030
  },
3860
5031
  async list(args) {
3861
- return client.listSecrets(
5032
+ return secretsClient.listSecrets(
3862
5033
  create15(ListSecretsRequestSchema, {
3863
5034
  tenantId: args.tenantId,
3864
5035
  projectId: args.projectId,
3865
5036
  ownerKind: args.ownerKind ?? OwnerKind.UNSPECIFIED,
3866
5037
  ownerId: args.ownerId ?? "",
3867
5038
  includeSoftDeleted: args.includeSoftDeleted ?? false,
5039
+ where: args.where,
3868
5040
  first: args.first ?? DEFAULT_PAGE_SIZE,
3869
5041
  after: args.after,
3870
5042
  last: args.last,
@@ -3872,26 +5044,81 @@ function createSecretsMethods(client) {
3872
5044
  })
3873
5045
  );
3874
5046
  },
3875
- async rotate(ref, plaintext) {
3876
- const resp = await client.rotateSecret(
3877
- create15(RotateSecretRequestSchema, { ref, plaintext })
5047
+ async rotate(ref, plaintext, expiresAt) {
5048
+ const resp = await secretsClient.rotateSecret(
5049
+ create15(RotateSecretRequestSchema, {
5050
+ ref,
5051
+ plaintext,
5052
+ expiresAt: expiresAt ? timestampFromDate(expiresAt) : void 0
5053
+ })
3878
5054
  );
3879
5055
  return resp.newRef;
3880
5056
  },
3881
5057
  async delete(ref) {
3882
- await client.deleteSecret(create15(DeleteSecretRequestSchema, { ref }));
5058
+ await secretsClient.deleteSecret(
5059
+ create15(DeleteSecretRequestSchema, { ref })
5060
+ );
3883
5061
  },
3884
5062
  async restore(ref) {
3885
- await client.restoreSecret(create15(RestoreSecretRequestSchema, { ref }));
5063
+ await secretsClient.restoreSecret(
5064
+ create15(RestoreSecretRequestSchema, { ref })
5065
+ );
3886
5066
  },
3887
5067
  async purge(args = {}) {
3888
- const resp = await client.purgeSoftDeleted(
5068
+ const resp = await secretsClient.purgeSoftDeleted(
3889
5069
  create15(PurgeSoftDeletedRequestSchema, {
3890
5070
  tenantId: args.tenantId ?? "",
3891
5071
  projectId: args.projectId ?? ""
3892
5072
  })
3893
5073
  );
3894
5074
  return resp.purgedCount;
5075
+ },
5076
+ // ── AppInstallationService surface (used by AppDetailPage credential editor) ──
5077
+ async getAppCredentialStruct(tenantId, projectId, appName) {
5078
+ const resp = await appInstallClient.getAppCredentialStruct(
5079
+ create15(GetAppCredentialStructRequestSchema, {
5080
+ tenantId,
5081
+ projectId,
5082
+ appName
5083
+ })
5084
+ );
5085
+ return {
5086
+ values: resp.values?.fields ?? {},
5087
+ populated: resp.populated
5088
+ };
5089
+ },
5090
+ async completeAppInstall(args) {
5091
+ const resp = await appInstallClient.completeAppInstall(
5092
+ create15(CompleteAppInstallRequestSchema, {
5093
+ tenantId: args.tenantId,
5094
+ projectId: args.projectId,
5095
+ appName: args.appName,
5096
+ values: args.values
5097
+ })
5098
+ );
5099
+ return resp.success;
5100
+ },
5101
+ async rotateAppCredential(args) {
5102
+ const resp = await appInstallClient.rotateAppCredential(
5103
+ create15(RotateAppCredentialRequestSchema, {
5104
+ tenantId: args.tenantId,
5105
+ projectId: args.projectId,
5106
+ appName: args.appName,
5107
+ fieldName: args.fieldName,
5108
+ plaintext: args.plaintext
5109
+ })
5110
+ );
5111
+ return resp.success;
5112
+ },
5113
+ async uninstallAppFromVault(tenantId, projectId, appName) {
5114
+ const resp = await appInstallClient.uninstallApp(
5115
+ create15(AppInstallationServiceUninstallAppRequestSchema, {
5116
+ tenantId,
5117
+ projectId,
5118
+ appName
5119
+ })
5120
+ );
5121
+ return resp.success;
3895
5122
  }
3896
5123
  };
3897
5124
  }
@@ -3931,8 +5158,14 @@ function createNodePlatformClient(apiUrl, headers) {
3931
5158
  publishBatches: createPublishBatchesMethods(
3932
5159
  createRpcClient(SchedulesService, transport)
3933
5160
  ),
3934
- apps: createAppsMethods(createRpcClient(AppsService, transport)),
3935
- secrets: createSecretsMethods(createRpcClient(SecretsService, transport))
5161
+ apps: createAppsMethods(
5162
+ createRpcClient(AppsService, transport),
5163
+ createRpcClient(AppStatusService, transport)
5164
+ ),
5165
+ secrets: createSecretsMethods(
5166
+ createRpcClient(SecretsService, transport),
5167
+ createRpcClient(AppInstallationService, transport)
5168
+ )
3936
5169
  };
3937
5170
  }
3938
5171
 
@@ -5515,6 +6748,11 @@ import { existsSync as existsSync4, readFileSync, writeFileSync as writeFileSync
5515
6748
  import { resolve as resolve4 } from "path";
5516
6749
 
5517
6750
  // src/lib/reconciler.ts
6751
+ function foldRemoteFieldRelationship(f) {
6752
+ if (!f || typeof f !== "object") return f;
6753
+ const { relationship: _drop, ...rest } = f;
6754
+ return { ...rest, config: fieldConfigWithRelationship(f) };
6755
+ }
5518
6756
  function zeroCounts() {
5519
6757
  return { created: 0, updated: 0, deleted: 0 };
5520
6758
  }
@@ -5844,7 +7082,7 @@ async function reconcileModels(client, configId, models, summary, force, allowLo
5844
7082
  continue;
5845
7083
  }
5846
7084
  const cfgFields = m.fields ?? [];
5847
- const platFields = ex.fields ?? [];
7085
+ const platFields = (ex.fields ?? []).map(foldRemoteFieldRelationship);
5848
7086
  const snapFields = ex.lastPushedFields;
5849
7087
  const hasSnapshot = ex.lastPushedAt != null;
5850
7088
  const { merged, conflicts } = threeWayMergeKeyed(
@@ -5869,7 +7107,7 @@ async function reconcileModels(client, configId, models, summary, force, allowLo
5869
7107
  }
5870
7108
  for (const [key, ex] of configOwnedByKey) {
5871
7109
  if (manifestKeys.has(key)) continue;
5872
- const platFields = ex.fields ?? [];
7110
+ const platFields = (ex.fields ?? []).map(foldRemoteFieldRelationship);
5873
7111
  const snapFields = ex.lastPushedFields;
5874
7112
  const hasSnapshot = ex.lastPushedAt != null;
5875
7113
  if (hasSnapshot && !deepEqual(platFields, snapFields)) {
@@ -6296,8 +7534,7 @@ async function reconcileCustomerRoles(client, tenantId, projectId, roles, summar
6296
7534
  );
6297
7535
  }
6298
7536
  const existing = await client.identity.listCustomerRoles({
6299
- tenantId,
6300
- projectId,
7537
+ where: { tenantId, projectId },
6301
7538
  first: 200
6302
7539
  });
6303
7540
  const existingByKey = new Map(
@@ -7068,7 +8305,7 @@ function registerPullCommand(program2, globalOpts) {
7068
8305
  apps[a.name] = appToInput(a);
7069
8306
  }
7070
8307
  }
7071
- const { project } = await client.identity.getProject(projectId);
8308
+ const project = await client.identity.getProject(projectId);
7072
8309
  projectBlock = {
7073
8310
  id: projectId,
7074
8311
  tenantId,
@@ -8119,11 +9356,13 @@ function registerCustomerRolesCommands(program2, globalOpts) {
8119
9356
  const ctx = await resolveProjectContext({ project: opts.project });
8120
9357
  const client = await createPlatformClient(opts);
8121
9358
  const result = await client.identity.listCustomerRoles({
8122
- tenantId: ctx?.project.tenantId,
8123
- projectId: ctx?.project.id,
9359
+ where: {
9360
+ ...ctx?.project.tenantId ? { tenantId: ctx.project.tenantId } : {},
9361
+ ...ctx?.project.id ? { projectId: ctx.project.id } : {}
9362
+ },
8124
9363
  first: parseInt(String(cmdOpts.first ?? "100"), 10)
8125
9364
  });
8126
- formatListProto(CustomerRoleSchema, result.items, opts, {
9365
+ formatListProto(RoleSchema, result.items, opts, {
8127
9366
  columns: [
8128
9367
  { key: "id", header: "ID", width: 28 },
8129
9368
  { key: "key", header: "Key", width: 16 },
@@ -8167,7 +9406,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
8167
9406
  isDefault: !!cmdOpts.default
8168
9407
  });
8169
9408
  if (opts.json || opts.jsonl) {
8170
- formatOutputProto(CustomerRoleSchema, role, opts);
9409
+ formatOutputProto(RoleSchema, role, opts);
8171
9410
  } else {
8172
9411
  success(`Created customer role: ${role?.name} (${role?.key})`);
8173
9412
  console.log(" Existing customers must log in again to pick up the new scopes.");
@@ -8189,7 +9428,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
8189
9428
  isDefault: cmdOpts.default === void 0 ? void 0 : !!cmdOpts.default
8190
9429
  });
8191
9430
  if (opts.json || opts.jsonl) {
8192
- formatOutputProto(CustomerRoleSchema, role, opts);
9431
+ formatOutputProto(RoleSchema, role, opts);
8193
9432
  } else {
8194
9433
  success(`Updated customer role: ${role?.name} (${role?.key})`);
8195
9434
  console.log(" Existing customers must log in again to pick up scope changes.");
@@ -8225,7 +9464,7 @@ function registerCustomerRolesCommands(program2, globalOpts) {
8225
9464
  roleId: String(cmdOpts.role)
8226
9465
  });
8227
9466
  if (opts.json || opts.jsonl) {
8228
- formatOutputProto(CustomerRoleAssignmentSchema, assignment, opts);
9467
+ formatOutputProto(RoleAssignmentSchema, assignment, opts);
8229
9468
  } else {
8230
9469
  success(`Assigned role ${cmdOpts.role} to customer ${cmdOpts.customer}`);
8231
9470
  console.log(" The customer must log in again to pick up the role.");
@@ -8259,8 +9498,10 @@ function registerCustomerRolesCommands(program2, globalOpts) {
8259
9498
  }
8260
9499
  const client = await createPlatformClient(opts);
8261
9500
  const result = await client.identity.listCustomerRoleAssignments({
8262
- customerId: cmdOpts.customer ? String(cmdOpts.customer) : void 0,
8263
- roleId: cmdOpts.role ? String(cmdOpts.role) : void 0
9501
+ where: {
9502
+ ...cmdOpts.customer ? { customerId: String(cmdOpts.customer) } : {},
9503
+ ...cmdOpts.role ? { roleId: String(cmdOpts.role) } : {}
9504
+ }
8264
9505
  });
8265
9506
  formatOutput(result, opts);
8266
9507
  })
@@ -8328,22 +9569,17 @@ function registerOperationsCommands(program2, globalOpts) {
8328
9569
  operationKey: key,
8329
9570
  input: inputData
8330
9571
  });
8331
- if (result.execution) {
8332
- formatOutputProto(OperationExecutionSchema, result.execution, opts);
9572
+ const errorMessage = result?.error ? result.error.message ?? JSON.stringify(result.error) : null;
9573
+ if (result) {
9574
+ formatOutputProto(OperationExecutionSchema, result, opts);
8333
9575
  } else {
8334
- formatOutput(
8335
- {
8336
- completed: result.completed,
8337
- errorMessage: result.errorMessage ?? null
8338
- },
8339
- opts
8340
- );
9576
+ formatOutput({ completed: false, errorMessage: null }, opts);
8341
9577
  }
8342
9578
  if (!(opts.json || opts.jsonl || opts.quiet)) {
8343
- if (result.completed) {
8344
- success(`Operation completed in ${result.execution?.durationMs ?? 0}ms`);
8345
- } else if (result.errorMessage) {
8346
- console.error(`Operation failed: ${result.errorMessage}`);
9579
+ if (result?.completed) {
9580
+ success(`Operation completed in ${result.durationMs ?? 0}ms`);
9581
+ } else if (errorMessage) {
9582
+ console.error(`Operation failed: ${errorMessage}`);
8347
9583
  }
8348
9584
  }
8349
9585
  }
@@ -8726,8 +9962,10 @@ function registerApiKeysCommands(program2, globalOpts) {
8726
9962
  withErrorHandler(globalOpts, async (cmdOpts) => {
8727
9963
  const opts = globalOpts();
8728
9964
  const client = await createPlatformClient(opts);
9965
+ const scopes = cmdOpts.scopes.split(",").map((s) => s.trim()).filter(Boolean);
8729
9966
  const result = await client.identity.createApiKey({
8730
- name: cmdOpts.name
9967
+ name: cmdOpts.name,
9968
+ scopes
8731
9969
  });
8732
9970
  if (opts.json || opts.jsonl) {
8733
9971
  formatOutput(
@@ -8806,60 +10044,8 @@ function registerApiKeysCommands(program2, globalOpts) {
8806
10044
  );
8807
10045
  }
8808
10046
 
8809
- // src/commands/auth.ts
8810
- import chalk11 from "chalk";
8811
- import { timestampDate } from "@bufbuild/protobuf/wkt";
8812
- function registerAuthCommands(program2, globalOpts) {
8813
- const auth = program2.command("auth").description("Inspect customer auth configuration and verify customer tokens");
8814
- auth.command("config").description("Print the project's customer-auth configuration").action(
8815
- withErrorHandler(globalOpts, async () => {
8816
- const opts = globalOpts();
8817
- const client = await createPlatformClient(opts);
8818
- const config2 = await client.identity.getCustomerAuthConfig();
8819
- if (!config2) {
8820
- throw new Error("No customer auth configuration found for this project.");
8821
- }
8822
- formatOutputProto(CustomerAuthConfigSchema, config2, opts);
8823
- })
8824
- );
8825
- auth.command("verify-token <token>").description("Verify a customer JWT and print its claims").action(
8826
- withErrorHandler(globalOpts, async (token) => {
8827
- const opts = globalOpts();
8828
- const client = await createPlatformClient(opts);
8829
- const resp = await client.identity.verifyCustomerToken(token);
8830
- const expiresAtIso = resp.expiresAt ? timestampDate(resp.expiresAt).toISOString() : null;
8831
- if (opts.json || opts.jsonl) {
8832
- formatOutput(
8833
- {
8834
- valid: resp.valid,
8835
- customerId: resp.customerId ?? null,
8836
- email: resp.email ?? null,
8837
- roles: resp.roles ?? [],
8838
- expiresAt: expiresAtIso,
8839
- error: resp.error ?? null
8840
- },
8841
- opts
8842
- );
8843
- return;
8844
- }
8845
- if (!resp.valid) {
8846
- throw new Error(
8847
- `Token invalid: ${resp.error ?? "no further detail"}`
8848
- );
8849
- }
8850
- console.log(chalk11.green("\u25CF Valid"));
8851
- if (resp.customerId)
8852
- console.log(` Customer: ${chalk11.cyan(resp.customerId)}`);
8853
- if (resp.email) console.log(` Email: ${resp.email}`);
8854
- if (resp.roles && resp.roles.length > 0)
8855
- console.log(` Roles: ${resp.roles.join(", ")}`);
8856
- if (expiresAtIso) console.log(` Expires: ${expiresAtIso}`);
8857
- })
8858
- );
8859
- }
8860
-
8861
10047
  // src/commands/auth-providers.ts
8862
- import chalk12 from "chalk";
10048
+ import chalk11 from "chalk";
8863
10049
  var VALID_TYPES = [
8864
10050
  "OAUTH2",
8865
10051
  "TOKEN_SSO",
@@ -8912,7 +10098,7 @@ function registerAuthProvidersCommands(program2, globalOpts) {
8912
10098
  formatOutputProto(AuthProviderSchema, provider, opts);
8913
10099
  } else {
8914
10100
  const p = provider;
8915
- console.log(chalk12.bold(`${p.name}`) + chalk12.gray(` (${p.key})`));
10101
+ console.log(chalk11.bold(`${p.name}`) + chalk11.gray(` (${p.key})`));
8916
10102
  console.log(` Type: ${p.type}`);
8917
10103
  console.log(` Enabled: ${p.enabled ? "yes" : "no"}`);
8918
10104
  console.log(` Default: ${p.isDefault ? "yes" : "no"}`);
@@ -8926,13 +10112,13 @@ function registerAuthProvidersCommands(program2, globalOpts) {
8926
10112
  if (p.configDisplay) {
8927
10113
  console.log(` Config:`);
8928
10114
  console.log(
8929
- chalk12.gray(
10115
+ chalk11.gray(
8930
10116
  JSON.stringify(p.configDisplay, null, 2).replace(/^/gm, " ")
8931
10117
  )
8932
10118
  );
8933
10119
  }
8934
- console.log(chalk12.gray(` Created: ${p.createdAt}`));
8935
- console.log(chalk12.gray(` Updated: ${p.updatedAt}`));
10120
+ console.log(chalk11.gray(` Created: ${p.createdAt}`));
10121
+ console.log(chalk11.gray(` Updated: ${p.updatedAt}`));
8936
10122
  }
8937
10123
  })
8938
10124
  );
@@ -9043,7 +10229,7 @@ function registerAuthProvidersCommands(program2, globalOpts) {
9043
10229
  }
9044
10230
 
9045
10231
  // src/commands/embeddings.ts
9046
- import chalk13 from "chalk";
10232
+ import chalk12 from "chalk";
9047
10233
  function registerEmbeddingsCommands(program2, globalOpts) {
9048
10234
  const embeddings = program2.command("embeddings").description("Manage vector embeddings for semantic search");
9049
10235
  embeddings.command("write").description("Write an embedding vector for a record").option("-d, --data <json>", "Embedding input as JSON string").option("--file <path>", "Embedding input from JSON file").action(
@@ -9129,13 +10315,13 @@ function registerEmbeddingsCommands(program2, globalOpts) {
9129
10315
  return;
9130
10316
  }
9131
10317
  if (results.length === 0) {
9132
- console.log(chalk13.dim("No matches."));
10318
+ console.log(chalk12.dim("No matches."));
9133
10319
  return;
9134
10320
  }
9135
10321
  for (const r of results) {
9136
10322
  const score = typeof r.similarity === "number" ? r.similarity.toFixed(4) : "\u2014";
9137
10323
  console.log(
9138
- ` ${chalk13.cyan(r.id)} ${chalk13.dim(r.modelKey ?? "")} ${chalk13.gray(`sim=${score}`)}`
10324
+ ` ${chalk12.cyan(r.id)} ${chalk12.dim(r.modelKey ?? "")} ${chalk12.gray(`sim=${score}`)}`
9139
10325
  );
9140
10326
  }
9141
10327
  })
@@ -9158,12 +10344,12 @@ function registerEmbeddingsCommands(program2, globalOpts) {
9158
10344
  return;
9159
10345
  }
9160
10346
  if (stats.length === 0) {
9161
- console.log(chalk13.dim("No embeddings yet."));
10347
+ console.log(chalk12.dim("No embeddings yet."));
9162
10348
  return;
9163
10349
  }
9164
10350
  for (const s of stats) {
9165
10351
  console.log(
9166
- ` ${chalk13.cyan(s.modelKey)} ${chalk13.dim(`embedded=${s.embeddedRecords}/${s.totalRecords} pending=${s.pendingRecords}`)}`
10352
+ ` ${chalk12.cyan(s.modelKey)} ${chalk12.dim(`embedded=${s.embeddedRecords}/${s.totalRecords} pending=${s.pendingRecords}`)}`
9167
10353
  );
9168
10354
  }
9169
10355
  })
@@ -9184,13 +10370,13 @@ function registerEmbeddingsCommands(program2, globalOpts) {
9184
10370
  return;
9185
10371
  }
9186
10372
  if (results.length === 0) {
9187
- console.log(chalk13.dim("No similar records."));
10373
+ console.log(chalk12.dim("No similar records."));
9188
10374
  return;
9189
10375
  }
9190
10376
  for (const r of results) {
9191
10377
  const score = typeof r.similarity === "number" ? r.similarity.toFixed(4) : "\u2014";
9192
10378
  console.log(
9193
- ` ${chalk13.cyan(r.id)} ${chalk13.dim(r.modelKey ?? "")} ${chalk13.gray(`sim=${score}`)}`
10379
+ ` ${chalk12.cyan(r.id)} ${chalk12.dim(r.modelKey ?? "")} ${chalk12.gray(`sim=${score}`)}`
9194
10380
  );
9195
10381
  }
9196
10382
  }
@@ -9397,7 +10583,7 @@ function registerHooksCommands(program2, globalOpts) {
9397
10583
  }
9398
10584
 
9399
10585
  // src/commands/rollouts.ts
9400
- import chalk14 from "chalk";
10586
+ import chalk13 from "chalk";
9401
10587
  function parseScheduledAt(value) {
9402
10588
  const date = new Date(value);
9403
10589
  if (Number.isNaN(date.getTime())) {
@@ -9444,10 +10630,10 @@ function registerRolloutsCommands(program2, globalOpts) {
9444
10630
  formatOutputProto(PublishBatchSchema, batch, opts);
9445
10631
  if (items.length > 0) {
9446
10632
  console.log();
9447
- console.log(chalk14.bold(`Items (${items.length}):`));
10633
+ console.log(chalk13.bold(`Items (${items.length}):`));
9448
10634
  for (const it of items) {
9449
10635
  console.log(
9450
- ` ${chalk14.cyan(it.id)} ${chalk14.dim(it.targetKind)} ${chalk14.gray(it.status ?? "")}`
10636
+ ` ${chalk13.cyan(it.id)} ${chalk13.dim(it.targetKind)} ${chalk13.gray(it.status ?? "")}`
9451
10637
  );
9452
10638
  }
9453
10639
  }
@@ -9871,7 +11057,7 @@ function registerSettingsCommands(program2, globalOpts) {
9871
11057
  // src/commands/design-tokens.ts
9872
11058
  import { existsSync as existsSync6, readFileSync as readFileSync2 } from "fs";
9873
11059
  import { resolve as resolve6 } from "path";
9874
- import chalk15 from "chalk";
11060
+ import chalk14 from "chalk";
9875
11061
  function registerDesignTokensCommands(program2, globalOpts) {
9876
11062
  const tokens = program2.command("design-tokens").description("Manage project design tokens (W3C-formatted)");
9877
11063
  tokens.command("get").description("Print the current design tokens document").option("--channel <channel>", "draft | published", "draft").option(
@@ -9919,7 +11105,7 @@ function registerDesignTokensCommands(program2, globalOpts) {
9919
11105
  const resp = await client.settings.publishDesignTokens();
9920
11106
  success("Design tokens published");
9921
11107
  if (resp.breakingChanges && resp.breakingChanges.length > 0) {
9922
- console.log(chalk15.yellow("\nBreaking changes:"));
11108
+ console.log(chalk14.yellow("\nBreaking changes:"));
9923
11109
  for (const c of resp.breakingChanges) {
9924
11110
  console.log(` ${c.severity} ${c.path}: ${c.description}`);
9925
11111
  }
@@ -9935,7 +11121,7 @@ function registerDesignTokensCommands(program2, globalOpts) {
9935
11121
  const resp = await client.settings.publishDesignTokens();
9936
11122
  success("Design tokens published");
9937
11123
  if (resp.breakingChanges && resp.breakingChanges.length > 0) {
9938
- console.log(chalk15.yellow("\nBreaking changes:"));
11124
+ console.log(chalk14.yellow("\nBreaking changes:"));
9939
11125
  for (const c of resp.breakingChanges) {
9940
11126
  console.log(` ${c.severity} ${c.path}: ${c.description}`);
9941
11127
  }
@@ -9960,12 +11146,12 @@ function registerDesignTokensCommands(program2, globalOpts) {
9960
11146
  return;
9961
11147
  }
9962
11148
  if (status.hasPendingChanges) {
9963
- console.log(chalk15.yellow("\u25CF Pending changes"));
11149
+ console.log(chalk14.yellow("\u25CF Pending changes"));
9964
11150
  } else {
9965
- console.log(chalk15.green("\u25CF Up to date"));
11151
+ console.log(chalk14.green("\u25CF Up to date"));
9966
11152
  }
9967
11153
  if (status.breakingChanges && status.breakingChanges.length > 0) {
9968
- console.log(chalk15.yellow("\nPending changes:"));
11154
+ console.log(chalk14.yellow("\nPending changes:"));
9969
11155
  for (const c of status.breakingChanges) {
9970
11156
  console.log(` ${c.severity} ${c.path}: ${c.description}`);
9971
11157
  }
@@ -10571,7 +11757,7 @@ function registerConfigsCommands(program2, globalOpts) {
10571
11757
  }
10572
11758
 
10573
11759
  // src/commands/apps.ts
10574
- import chalk17 from "chalk";
11760
+ import chalk16 from "chalk";
10575
11761
  import { spawn as spawn2 } from "child_process";
10576
11762
  import { existsSync as existsSync8, watch as fsWatch } from "fs";
10577
11763
  import { resolve as resolvePath } from "path";
@@ -10579,7 +11765,7 @@ import { resolve as resolvePath } from "path";
10579
11765
  // src/lib/tunnel.ts
10580
11766
  import { spawn } from "child_process";
10581
11767
  import { once } from "events";
10582
- import chalk16 from "chalk";
11768
+ import chalk15 from "chalk";
10583
11769
  async function startTunnel(opts) {
10584
11770
  const host = opts.host ?? "localhost";
10585
11771
  if (opts.kind === "cloudflared") return startCloudflared(host, opts.port, opts.logs ?? true);
@@ -10615,7 +11801,7 @@ function startCloudflared(host, port, logs) {
10615
11801
  let buffered = "";
10616
11802
  const onData = (chunk) => {
10617
11803
  const text = chunk.toString("utf-8");
10618
- if (logs) process.stderr.write(chalk16.dim(text));
11804
+ if (logs) process.stderr.write(chalk15.dim(text));
10619
11805
  buffered += text;
10620
11806
  const match = buffered.match(CLOUDFLARED_URL_RE);
10621
11807
  if (match && !resolved) {
@@ -10663,8 +11849,8 @@ function startNgrok(port, logs) {
10663
11849
  return;
10664
11850
  }
10665
11851
  if (logs) {
10666
- child.stdout.on("data", (c) => process.stderr.write(chalk16.dim(c.toString("utf-8"))));
10667
- child.stderr.on("data", (c) => process.stderr.write(chalk16.dim(c.toString("utf-8"))));
11852
+ child.stdout.on("data", (c) => process.stderr.write(chalk15.dim(c.toString("utf-8"))));
11853
+ child.stderr.on("data", (c) => process.stderr.write(chalk15.dim(c.toString("utf-8"))));
10668
11854
  }
10669
11855
  let resolved = false;
10670
11856
  child.once("error", (err) => {
@@ -11006,7 +12192,7 @@ function registerAppsCommands(program2, globalOpts) {
11006
12192
  return;
11007
12193
  }
11008
12194
  if (!opts.json) {
11009
- console.error(chalk17.dim(`Starting ${kind} tunnel \u2192 http://${cmdOpts.host}:${port}\u2026`));
12195
+ console.error(chalk16.dim(`Starting ${kind} tunnel \u2192 http://${cmdOpts.host}:${port}\u2026`));
11010
12196
  }
11011
12197
  const handle = await startTunnel({
11012
12198
  kind,
@@ -11062,20 +12248,20 @@ function runDevSession(info) {
11062
12248
  }
11063
12249
  const host = hostOf(info.publicUrl);
11064
12250
  console.log();
11065
- console.log(chalk17.bold.green(" Tunnel ready"));
11066
- console.log(` ${chalk17.bold(info.publicUrl)} ${chalk17.dim("\u2192")} http://${info.localHost ?? "localhost"}:${info.port}`);
12251
+ console.log(chalk16.bold.green(" Tunnel ready"));
12252
+ console.log(` ${chalk16.bold(info.publicUrl)} ${chalk16.dim("\u2192")} http://${info.localHost ?? "localhost"}:${info.port}`);
11067
12253
  console.log();
11068
- console.log(chalk17.dim(" Point `foir push` at the tunnel so app manifests resolve here."));
11069
- console.log(chalk17.dim(" If your foir.config.ts uses an env-gated source (recommended):"));
11070
- console.log(chalk17.dim(` FOIR_APPS_HOST=${host} foir push`));
11071
- console.log(chalk17.dim(" Otherwise: update apps.<name>.source in foir.config.ts to a URL on"));
11072
- console.log(chalk17.dim(` ${host} and run foir push.`));
12254
+ console.log(chalk16.dim(" Point `foir push` at the tunnel so app manifests resolve here."));
12255
+ console.log(chalk16.dim(" If your foir.config.ts uses an env-gated source (recommended):"));
12256
+ console.log(chalk16.dim(` FOIR_APPS_HOST=${host} foir push`));
12257
+ console.log(chalk16.dim(" Otherwise: update apps.<name>.source in foir.config.ts to a URL on"));
12258
+ console.log(chalk16.dim(` ${host} and run foir push.`));
11073
12259
  console.log();
11074
12260
  if (info.kind === "byo") {
11075
- console.log(chalk17.dim(" (BYO tunnel \u2014 leaving lifecycle to you.)"));
12261
+ console.log(chalk16.dim(" (BYO tunnel \u2014 leaving lifecycle to you.)"));
11076
12262
  return Promise.resolve();
11077
12263
  }
11078
- console.log(chalk17.dim(" Press Ctrl+C to stop the tunnel."));
12264
+ console.log(chalk16.dim(" Press Ctrl+C to stop the tunnel."));
11079
12265
  return Promise.resolve();
11080
12266
  }
11081
12267
  function hostOf(url) {
@@ -11089,7 +12275,7 @@ function runPush(host, jsonMode) {
11089
12275
  return new Promise((resolve9, reject) => {
11090
12276
  if (!jsonMode) {
11091
12277
  console.log();
11092
- console.log(chalk17.dim(`\u2192 foir push (${FOIR_APPS_HOST_ENV}=${host})`));
12278
+ console.log(chalk16.dim(`\u2192 foir push (${FOIR_APPS_HOST_ENV}=${host})`));
11093
12279
  }
11094
12280
  const entry = process.argv[1];
11095
12281
  if (!entry) {
@@ -11112,12 +12298,12 @@ function startWatchLoop(host, jsonMode) {
11112
12298
  const target = WATCH_FILES.map((n) => resolvePath(cwd, n)).find((p) => existsSync8(p));
11113
12299
  if (!target) {
11114
12300
  if (!jsonMode) {
11115
- console.error(chalk17.yellow(`! --watch: no foir.config.* in ${cwd}; skipping watch loop.`));
12301
+ console.error(chalk16.yellow(`! --watch: no foir.config.* in ${cwd}; skipping watch loop.`));
11116
12302
  }
11117
12303
  return null;
11118
12304
  }
11119
12305
  if (!jsonMode) {
11120
- console.log(chalk17.dim(`Watching ${target} \u2014 saving triggers foir push.`));
12306
+ console.log(chalk16.dim(`Watching ${target} \u2014 saving triggers foir push.`));
11121
12307
  }
11122
12308
  let pending = false;
11123
12309
  let running = false;
@@ -11130,7 +12316,7 @@ function startWatchLoop(host, jsonMode) {
11130
12316
  running = true;
11131
12317
  pending = false;
11132
12318
  runPush(host, jsonMode).catch((err) => {
11133
- if (!jsonMode) console.error(chalk17.red(`push failed: ${err.message}`));
12319
+ if (!jsonMode) console.error(chalk16.red(`push failed: ${err.message}`));
11134
12320
  }).finally(() => {
11135
12321
  running = false;
11136
12322
  if (pending) tick();
@@ -11631,7 +12817,6 @@ registerOperationsCommands(program, getGlobalOpts);
11631
12817
  registerSegmentsCommands(program, getGlobalOpts);
11632
12818
  registerSchedulesCommands(program, getGlobalOpts);
11633
12819
  registerApiKeysCommands(program, getGlobalOpts);
11634
- registerAuthCommands(program, getGlobalOpts);
11635
12820
  registerAuthProvidersCommands(program, getGlobalOpts);
11636
12821
  registerEmbeddingsCommands(program, getGlobalOpts);
11637
12822
  registerHooksCommands(program, getGlobalOpts);