@githolon/runtime 0.119.12 → 0.119.28

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.
@@ -4708,7 +4708,7 @@ var NomosRuntimeComponent = (() => {
4708
4708
  })(NullValue || (NullValue = {}));
4709
4709
 
4710
4710
  // ../../adapter/proto/nomos/kernel/v1/kernel_pb.js
4711
- var file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEixgkKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEkAKCWNvbmZpZ3VyZRgQIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxDb25maWd1cmF0aW9uUmVxdWVzdEgAEkgKE3NpZ25fcHJlcGFyZWRfb2ZmZXIYESABKAsyKS5ub21vcy5rZXJuZWwudjEuU2lnblByZXBhcmVkT2ZmZXJSZXF1ZXN0SAASSgoUcHJlcGFyZV9yZW1vdGVfb2ZmZXIYEiABKAsyKi5ub21vcy5rZXJuZWwudjEuUHJlcGFyZVJlbW90ZU9mZmVyUmVxdWVzdEgAEk4KFnNpZ25fb2ZmZXJfcHJlcGFyYXRpb24YEyABKAsyLC5ub21vcy5rZXJuZWwudjEuU2lnbk9mZmVyUHJlcGFyYXRpb25SZXF1ZXN0SAASTgoWc2lnbl9iaXJ0aF9jZXJ0aWZpY2F0ZRgUIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5TaWduQmlydGhDZXJ0aWZpY2F0ZVJlcXVlc3RIABJDChBzaWduaW5nX2lkZW50aXR5GBcgASgLMicubm9tb3Mua2VybmVsLnYxLlNpZ25pbmdJZGVudGl0eVJlcXVlc3RIABJWChpzaWduX2F1dGhvcml0eV9hdHRlc3RhdGlvbhgYIAEoCzIwLm5vbW9zLmtlcm5lbC52MS5TaWduQXV0aG9yaXR5QXR0ZXN0YXRpb25SZXF1ZXN0SAASPAoNbWludF90eXBlZF9pZBgZIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5NaW50VHlwZWRJZFJlcXVlc3RIABJJChNlbmNyeXB0aW9uX2lkZW50aXR5GBogASgLMioubm9tb3Mua2VybmVsLnYxLkVuY3J5cHRpb25JZGVudGl0eVJlcXVlc3RIABI+Cg53cmFwX3Njb3BlX2tleRgbIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5XcmFwU2NvcGVLZXlSZXF1ZXN0SAASQgoQdW53cmFwX3Njb3BlX2tleRgcIAEoCzImLm5vbW9zLmtlcm5lbC52MS5VbndyYXBTY29wZUtleVJlcXVlc3RIAEILCglvcGVyYXRpb25KBAgVEBZKBAgWEBdSFGluaXRpYWxpemVfd29ya3NwYWNlUhZhcHBseV93b3Jrc3BhY2VfZWZmZWN0IoMKCgxDYWxsUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRISCgpyZXF1ZXN0X2lkGAIgASgJEisKB2ZhaWx1cmUYCiABKAsyGC5ub21vcy5rZXJuZWwudjEuRmFpbHVyZUgAEi0KBG9wZW4YCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT3BlblJlc3BvbnNlSAASLwoFb2ZmZXIYDCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUgAEi8KBXF1ZXJ5GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5UmVzcG9uc2VIABIxCgZvdXRib3gYDiABKAsyHy5ub21vcy5rZXJuZWwudjEuT3V0Ym94UmVzcG9uc2VIABItCgRzeW5jGA8gASgLMh0ubm9tb3Mua2VybmVsLnYxLlN5bmNSZXNwb25zZUgAEjMKB2N1c3RvZHkYECABKAsyIC5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVJlc3BvbnNlSAASQQoJY29uZmlndXJlGBEgASgLMiwubm9tb3Mua2VybmVsLnYxLktlcm5lbENvbmZpZ3VyYXRpb25SZXNwb25zZUgAEkkKE3NpZ25fcHJlcGFyZWRfb2ZmZXIYEiABKAsyKi5ub21vcy5rZXJuZWwudjEuU2lnblByZXBhcmVkT2ZmZXJSZXNwb25zZUgAEksKFHByZXBhcmVfcmVtb3RlX29mZmVyGBMgASgLMisubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlc3BvbnNlSAASTwoWc2lnbl9vZmZlcl9wcmVwYXJhdGlvbhgUIAEoCzItLm5vbW9zLmtlcm5lbC52MS5TaWduT2ZmZXJQcmVwYXJhdGlvblJlc3BvbnNlSAASTwoWc2lnbl9iaXJ0aF9jZXJ0aWZpY2F0ZRgVIAEoCzItLm5vbW9zLmtlcm5lbC52MS5TaWduQmlydGhDZXJ0aWZpY2F0ZVJlc3BvbnNlSAASRAoQc2lnbmluZ19pZGVudGl0eRgYIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5TaWduaW5nSWRlbnRpdHlSZXNwb25zZUgAElcKGnNpZ25fYXV0aG9yaXR5X2F0dGVzdGF0aW9uGBkgASgLMjEubm9tb3Mua2VybmVsLnYxLlNpZ25BdXRob3JpdHlBdHRlc3RhdGlvblJlc3BvbnNlSAASPQoNbWludF90eXBlZF9pZBgaIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5NaW50VHlwZWRJZFJlc3BvbnNlSAASSgoTZW5jcnlwdGlvbl9pZGVudGl0eRgbIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5FbmNyeXB0aW9uSWRlbnRpdHlSZXNwb25zZUgAEj8KDndyYXBfc2NvcGVfa2V5GBwgASgLMiUubm9tb3Mua2VybmVsLnYxLldyYXBTY29wZUtleVJlc3BvbnNlSAASQwoQdW53cmFwX3Njb3BlX2tleRgdIAEoCzInLm5vbW9zLmtlcm5lbC52MS5VbndyYXBTY29wZUtleVJlc3BvbnNlSABCCQoHb3V0Y29tZUoECBYQF0oECBcQGFIUaW5pdGlhbGl6ZV93b3Jrc3BhY2VSFmFwcGx5X3dvcmtzcGFjZV9lZmZlY3QitwIKB0ZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSYQoiaWRlbnRpdHlfcHJvdmlkZXJfd2l0bmVzc19yZXF1aXJlZBgKIAEoCzIwLm5vbW9zLmtlcm5lbC52MS5JZGVudGl0eVByb3ZpZGVyV2l0bmVzc1JlcXVpcmVkSACIAQESPwoQaGlzdG9yeV9yZXF1aXJlZBgLIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5IaXN0b3J5UmVxdWlyZWRIAYgBAUIlCiNfaWRlbnRpdHlfcHJvdmlkZXJfd2l0bmVzc19yZXF1aXJlZEITChFfaGlzdG9yeV9yZXF1aXJlZCJRCh9JZGVudGl0eVByb3ZpZGVyV2l0bmVzc1JlcXVpcmVkEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSFAoMcmVxdWlyZWRfa2lkGAIgASgJIjwKDE9wZW5SZXNwb25zZRIsCgZyZXN1bHQYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiugQKDU9mZmVyUmVzcG9uc2USMgoIYWRtaXR0ZWQYASABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZG1pdHRlZEgAEjAKB3JlZnVzZWQYAiABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZWZ1c2VkSAASOwoNZGVhZF9sZXR0ZXJlZBgDIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckRlYWRMZXR0ZXJlZEgAEjgKC3F1YXJhbnRpbmVkGAQgASgLMiEubm9tb3Mua2VybmVsLnYxLk9mZmVyUXVhcmFudGluZWRIABJKChVibG9ja2VkX29uX2RlcGVuZGVuY3kYBSABKAsyKS5ub21vcy5rZXJuZWwudjEuT2ZmZXJCbG9ja2VkT25EZXBlbmRlbmN5SAASMgoIcHJlcGFyZWQYBiABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJQcmVwYXJlZEgAEkIKEHdvcmtzcGFjZV9lZmZlY3QYByABKAsyKC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlRWZmZWN0SWRlbnRpdHkSGwoOanVkZ2VkX2F0X2hlYWQYCCABKAlIAYgBARJNChJqdWRnbWVudF9zaWduYXR1cmUYCSABKAsyMS5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlRWZmZWN0SnVkZ21lbnRTaWduYXR1cmVCCQoHb3V0Y29tZUIRCg9fanVkZ2VkX2F0X2hlYWQifwogV29ya3NwYWNlRWZmZWN0SnVkZ21lbnRTaWduYXR1cmUSDwoHdmVyc2lvbhgBIAEoDRISCgpwdWJsaWNfa2V5GAIgASgMEhEKCWtleV9lcG9jaBgDIAEoEhIRCglzaWduYXR1cmUYBCABKAwSEAoIanVkZ21lbnQYBSABKAwiqAEKF1dvcmtzcGFjZUVmZmVjdElkZW50aXR5EhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSIAoYc291cmNlX3dvcmtzcGFjZV9nZW5lc2lzGAIgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAyABKAkSIAoYdGFyZ2V0X3dvcmtzcGFjZV9nZW5lc2lzGAQgASgJEhUKDWVmZmVjdF9kaWdlc3QYBSABKAkiVwocV29ya3NwYWNlRWZmZWN0U3RhdHVzUmVxdWVzdBIgChhzb3VyY2Vfd29ya3NwYWNlX2dlbmVzaXMYASABKAkSFQoNZWZmZWN0X2RpZ2VzdBgCIAEoCSJRCh1Xb3Jrc3BhY2VFZmZlY3RTdGF0dXNSZXNwb25zZRIwCghqdWRnbWVudBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlc3BvbnNlIoYCCiNSZWNvcmRXb3Jrc3BhY2VFZmZlY3RPdXRjb21lUmVxdWVzdBIwCgZzb3VyY2UYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhkKEXNvdXJjZV9vZmZlcl9wYXRoGAIgASgJEhUKC21haWxib3hfdXJsGAMgASgJSAASPQoRcmVjaXBpZW50X2N1c3RvZHkYBSABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0SAASMAoIanVkZ21lbnQYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUIKCghldmlkZW5jZSJaCh5SZWNvcmRlZFdvcmtzcGFjZUVmZmVjdE91dGNvbWUSEQoJcmVmZXJlbmNlGAEgASgJEgsKA29pZBgCIAEoCRIYChB0ZXJtaW5hbF9yZWZ1c2FsGAMgASgIIq4FCg1PZmZlckFkbWl0dGVkEgwKBGhlYWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEhcKCmludGVudF9vdXQYAyABKAlIAIgBARIzCgdjcmVhdGVkGAQgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEjQKCGFmZmVjdGVkGAUgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEiwKBGJvcm4YBiADKAsyHi5ub21vcy5rZXJuZWwudjEuQm9ybldvcmtzcGFjZRI1Cg5iaXJ0aF9vdXRjb21lcxgHIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSNwoMa2VybmVsX3NwYW5zGAggASgLMhwubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5zSAGIAQESDwoHZHJ5X3J1bhgJIAEoCBIfChJpbnN0YWxsZWRfbGF3X2hhc2gYCiABKAlIAogBARI5CglwbGFjZW1lbnQYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuUGxhY2VtZW50QWRvcHRlZEgDiAEBEhcKD2FscmVhZHlfYXBwbGllZBgMIAEoCBI8CgxzdGF0ZV9jaGFuZ2UYDSABKAsyIS5ub21vcy5rZXJuZWwudjEuT2ZmZXJTdGF0ZUNoYW5nZUgEiAEBEkAKFGxhd192ZXJzaW9uX3dhcm5pbmdzGA4gAygLMiIubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25XYXJuaW5nQg0KC19pbnRlbnRfb3V0Qg8KDV9rZXJuZWxfc3BhbnNCFQoTX2luc3RhbGxlZF9sYXdfaGFzaEIMCgpfcGxhY2VtZW50Qg8KDV9zdGF0ZV9jaGFuZ2UiIwoLTGF3SWRlbnRpdHkSFAoMcGFja2FnZV9uYW1lGAEgASgJIiQKCkxhd1ZlcnNpb24SFgoOY2xvc3VyZV9zaGEyNTYYASABKAkiIQoPTGF3VmVyc2lvbkNsYWltEg4KBnNlbXZlchgBIAEoCSLgAgoRTGF3VmVyc2lvbldhcm5pbmcSKQoDbGF3GAEgASgLMhwubm9tb3Mua2VybmVsLnYxLkxhd0lkZW50aXR5Ei8KBW9yZGVyGAIgASgOMiAubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25PcmRlchI5Cg9pbnN0YWxsZWRfY2xhaW0YAyABKAsyIC5ub21vcy5rZXJuZWwudjEuTGF3VmVyc2lvbkNsYWltEjYKEWluc3RhbGxlZF92ZXJzaW9uGAQgASgLMhsubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb24SNgoMc2VydmVkX2NsYWltGAUgASgLMiAubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25DbGFpbRIzCg5zZXJ2ZWRfdmVyc2lvbhgGIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5MYXdWZXJzaW9uEg8KB21lc3NhZ2UYByABKAkiUgoQT2ZmZXJTdGF0ZUNoYW5nZRITCgtwYXJlbnRfaGVhZBgBIAEoCRIXCg9hZ2dyZWdhdGVfdHlwZXMYAiADKAkSEAoIYXJjaGl2ZXMYAyABKAgiLQoRT2ZmZXJBZ2dyZWdhdGVSZWYSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIwCg1Cb3JuV29ya3NwYWNlEhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRoZWFkGAIgASgJIssDCgxCaXJ0aE91dGNvbWUSFgoJd29ya3NwYWNlGAEgASgJSACIAQESMwoGc3RhdHVzGAIgASgOMiMubm9tb3Mua2VybmVsLnYxLkJpcnRoT3V0Y29tZVN0YXR1cxITCgZyZWFzb24YAyABKAlIAYgBARIRCgRjb2RlGAQgASgJSAKIAQESEAoIcmVwbGF5ZWQYBSABKAgSFQoIbGF3X2hhc2gYBiABKAlIA4gBARIdChBwYXJlbnRfd29ya3NwYWNlGAcgASgJSASIAQESHAoPY2hpbGRfd29ya3NwYWNlGAggASgJSAWIAQESJwoaY2VydGlmaWNhdGVfcmVmdXNhbF9yZWFzb24YCSABKAlIBogBARI0CgdyZWZ1c2FsGAogASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxIB4gBAUIMCgpfd29ya3NwYWNlQgkKB19yZWFzb25CBwoFX2NvZGVCCwoJX2xhd19oYXNoQhMKEV9wYXJlbnRfd29ya3NwYWNlQhIKEF9jaGlsZF93b3Jrc3BhY2VCHQobX2NlcnRpZmljYXRlX3JlZnVzYWxfcmVhc29uQgoKCF9yZWZ1c2FsIi8KEEtlcm5lbFNwYW5NZXRyaWMSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoBCKjAQoKS2VybmVsU3BhbhINCgVsYWJlbBgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBBIPCgdyZWNvcmRzGAMgASgEEjEKBnBoYXNlcxgEIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuTWV0cmljEjAKBW5vdGVzGAUgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMicQoLS2VybmVsU3BhbnMSLwoKb3BlcmF0aW9ucxgBIAMoCzIbLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuEjEKBmVuZ2luZRgCIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuTWV0cmljImEKDURvbWFpblJlZnVzYWwSEgoKbGF3X3NoYTI1NhgBIAEoDBIRCglpbnZhcmlhbnQYAiABKAkSFQoNdHlwZV9pZGVudGl0eRgDIAEoCRISCgp2YWx1ZV91c2RhGAQgASgMIs4BCgxPZmZlclJlZnVzZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIvCgdyZWZ1c2FsGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWwSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSNgoOZG9tYWluX3JlZnVzYWwYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuRG9tYWluUmVmdXNhbEILCglfb2ZmZXJfaWQiegoRT2ZmZXJEZWFkTGV0dGVyZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZyZWFzb24YAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIq4BChBPZmZlclF1YXJhbnRpbmVkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESGQoRYXV0aG9yZWRfbGF3X2hhc2gYAiABKAkSGAoQY3VycmVudF9sYXdfaGFzaBgDIAEoCRIOCgZyZWFzb24YBCABKAkSMQoLZGlhZ25vc3RpY3MYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIsABChhPZmZlckJsb2NrZWRPbkRlcGVuZGVuY3kSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZkZXRhaWwYAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSPQoSYXdhaXRzX21haW50ZW5hbmNlGAQgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlYWRJbmRleFBlbmRpbmdCCwoJX29mZmVyX2lkIr8BCg1PZmZlclByZXBhcmVkEhwKFGF1dGhvcmVkX2NoYW5nZV91c2RhGAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSIQoZYXV0aG9yX3NpZ25hdHVyZV9yZXF1aXJlZBgEIAEoCBI4CghkZXRhY2hlZBgFIAEoCzImLm5vbW9zLmtlcm5lbC52MS5EZXRhY2hlZFNpZ25pbmdJbnB1dHMiYwoVRGV0YWNoZWRTaWduaW5nSW5wdXRzEhIKCnB1YmxpY19rZXkYASABKAwSEQoJaW50ZW50X2lkGAIgASgJEg4KBmF1dGhvchgDIAEoDBITCgtvZmZlcl90b2tlbhgEIAEoCSKVAQoURGV0YWNoZWRTaWduZWRDaGFuZ2USHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSEgoKcHVibGljX2tleRgCIAEoDBIYChBhdXRob3Jfc2lnbmF0dXJlGAMgASgMEhIKCm9mZmVyX2Jhc2UYBCABKAkSHQoVb2ZmZXJfdG9rZW5fc2lnbmF0dXJlGAUgASgMImoKGFNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdBIcChRhdXRob3JlZF9jaGFuZ2VfdXNkYRgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAMgASgMIjcKGVNpZ25QcmVwYXJlZE9mZmVyUmVzcG9uc2USGgoSc2lnbmVkX2NoYW5nZV91c2RhGAEgASgMIq0BChlQcmVwYXJlUmVtb3RlT2ZmZXJSZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRISCgpwdWJsaWNfa2V5GAQgASgMEhEKCXNpZ25hdHVyZRgFIAEoDBIdChVyZXF1aXJlZF9jdXN0b2R5X2hlYWQYBiABKAkiUAoZT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZRIZChF3b3Jrc3BhY2VfYmluZGluZxgBIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAIgASgJIpkBChpQcmVwYXJlUmVtb3RlT2ZmZXJSZXNwb25zZRI/CgljaGFsbGVuZ2UYASABKAsyKi5ub21vcy5rZXJuZWwudjEuT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZUgAEi8KBW9mZmVyGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIAEIJCgdvdXRjb21lIoABChtTaWduT2ZmZXJQcmVwYXJhdGlvblJlcXVlc3QSFQoNb2ZmZXJfcmVxdWVzdBgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAMgASgJEhUKDWF1dGhvcl9zZWNyZXQYBCABKAwiRQocU2lnbk9mZmVyUHJlcGFyYXRpb25SZXNwb25zZRISCgpwdWJsaWNfa2V5GAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDCKkAQoWU2lnbmluZ0lkZW50aXR5UmVxdWVzdBI7CghnZW5lcmF0ZRgBIAEoCzInLm5vbW9zLmtlcm5lbC52MS5HZW5lcmF0ZVNpZ25pbmdLZXlQYWlySAASQAoNZGVyaXZlX3B1YmxpYxgCIAEoCzInLm5vbW9zLmtlcm5lbC52MS5EZXJpdmVTaWduaW5nUHVibGljS2V5SABCCwoJb3BlcmF0aW9uIhgKFkdlbmVyYXRlU2lnbmluZ0tleVBhaXIiKAoWRGVyaXZlU2lnbmluZ1B1YmxpY0tleRIOCgZzZWNyZXQYASABKAwilgEKF1NpZ25pbmdJZGVudGl0eVJlc3BvbnNlEjQKCWdlbmVyYXRlZBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5TaWduaW5nS2V5UGFpckgAEjsKDmRlcml2ZWRfcHVibGljGAIgASgLMiEubm9tb3Mua2VybmVsLnYxLlNpZ25pbmdQdWJsaWNLZXlIAEIICgZyZXN1bHQiNAoOU2lnbmluZ0tleVBhaXISDgoGc2VjcmV0GAEgASgMEhIKCnB1YmxpY19rZXkYAiABKAwiJgoQU2lnbmluZ1B1YmxpY0tleRISCgpwdWJsaWNfa2V5GAEgASgMIpwBCh9TaWduQXV0aG9yaXR5QXR0ZXN0YXRpb25SZXF1ZXN0EhUKDXNpZ25lcl9zZWNyZXQYASABKAwSGgoSYXNzZXJ0ZXJfd29ya3NwYWNlGAIgASgJEg4KBm9iamVjdBgDIAEoCRIQCghyZWxhdGlvbhgEIAEoCRIPCgdzdWJqZWN0GAUgASgJEhMKC2F0dGVzdGVkX2F0GAYgASgJIkkKIFNpZ25BdXRob3JpdHlBdHRlc3RhdGlvblJlc3BvbnNlEhEKCXNpZ25hdHVyZRgBIAEoDBISCgpwdWJsaWNfa2V5GAIgASgMIkQKEk1pbnRUeXBlZElkUmVxdWVzdBIQCgh0eXBlX3RhZxgBIAEoCRIcChRjYXB0dXJlZF91bml4X21pbGxpcxgCIAEoBCIhChNNaW50VHlwZWRJZFJlc3BvbnNlEgoKAmlkGAEgASgJIhsKGUVuY3J5cHRpb25JZGVudGl0eVJlcXVlc3QiRAoaRW5jcnlwdGlvbklkZW50aXR5UmVzcG9uc2USEgoKc2VjcmV0X2tleRgBIAEoDBISCgpwdWJsaWNfa2V5GAIgASgMIkYKE1dyYXBTY29wZUtleVJlcXVlc3QSHAoUcmVjaXBpZW50X3B1YmxpY19rZXkYASABKAwSEQoJc2NvcGVfa2V5GAIgASgMIkgKFFdyYXBTY29wZUtleVJlc3BvbnNlEhwKFGVwaGVtZXJhbF9wdWJsaWNfa2V5GAEgASgMEhIKCmNpcGhlcnRleHQYAiABKAwiZwoVVW53cmFwU2NvcGVLZXlSZXF1ZXN0EhwKFHJlY2lwaWVudF9zZWNyZXRfa2V5GAEgASgMEhwKFGVwaGVtZXJhbF9wdWJsaWNfa2V5GAIgASgMEhIKCmNpcGhlcnRleHQYAyABKAwiKwoWVW53cmFwU2NvcGVLZXlSZXNwb25zZRIRCglzY29wZV9rZXkYASABKAwikwEKDUtlcm5lbFJlZnVzYWwSMAoEY29kZRgBIAEoDjIiLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsQ29kZRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEAoIdGVybWluYWwYBCABKAgi/A8KDVF1ZXJ5UmVzcG9uc2USFQoLcmVzdWx0X3VzZGEYAiABKAxIABIsCgV2YWx1ZRgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlSAASSgoTYXV0aG9yaXphdGlvbl9jaGVjaxgKIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZUgAEkwKFGF1dGhvcml6YXRpb25fZXhwYW5kGAsgASgLMiwubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZUgAEj4KDW9zZ2lfcmVzb3VyY2UYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuT3NnaVJlc291cmNlUmVzcG9uc2VIABJKChNmcm9udGllcl90cmFuc2l0aW9uGA0gASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAASSwoUb3duZWRfZGV2aWNlX3JlcXVlc3QYDiABKAsyKy5ub21vcy5rZXJuZWwudjEuT3duZWREZXZpY2VSZXF1ZXN0UmVzcG9uc2VIABJPChZvd25lZF9wcmVwYXJlX2FwcHJvdmFsGA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLk93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2VIABIXCg1pbnRlZ2VyX3ZhbHVlGBAgASgSSAASUAoWYXV0aGVudGljYXRpb25fcG9zdHVyZRgRIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRoZW50aWNhdGlvblBvc3R1cmVSZXNwb25zZUgAEkgKEGNoaWxkX3dvcmtzcGFjZXMYEiABKAsyLC5ub21vcy5rZXJuZWwudjEuQ2hpbGRXb3Jrc3BhY2VRdWVyeVJlc3BvbnNlSAASWQoWYXV0aG9yaW5nX3JlcXVpcmVtZW50cxgTIAEoCzI3Lm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVBdXRob3JpbmdSZXF1aXJlbWVudHNSZXNwb25zZUgAEj4KDXdhcm1fcHJvZ3Jlc3MYFSABKAsyJS5ub21vcy5rZXJuZWwudjEuV2FybVByb2dyZXNzUmVzcG9uc2VIABJVChlpZGVudGl0eV9wcm92aWRlcl93aXRuZXNzGBYgASgLMjAubm9tb3Mua2VybmVsLnYxLklkZW50aXR5UHJvdmlkZXJXaXRuZXNzUmVzcG9uc2VIABJSChdpbnRlcmZhY2VfY29tcGF0aWJpbGl0eRgXIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5JbnRlcmZhY2VDb21wYXRpYmlsaXR5UmVzcG9uc2VIABIyChJhcHBsaWNhdGlvbl9yZXN1bHQYGCABKAsyFC5nb29nbGUucHJvdG9idWYuQW55SAASSgoTbWFpbnRlbmFuY2VfcXVhbnR1bRgZIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5NYWludGVuYW5jZVF1YW50dW1SZXNwb25zZUgAEj8KEnJlYWRfaW5kZXhfcGVuZGluZxgaIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZWFkSW5kZXhQZW5kaW5nSAASRwoSZnVsbF9oaXN0b3J5X2F1ZGl0GBsgASgLMikubm9tb3Mua2VybmVsLnYxLkZ1bGxIaXN0b3J5QXVkaXRSZXNwb25zZUgAElMKGHdvcmtzcGFjZV9lZmZlY3RfcmVjZWlwdBgcIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VFZmZlY3RSZWNlaXB0UmVzcG9uc2VIABJLChRvcGVuX2FwaV9kZXNjcmlwdGlvbhgdIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5PcGVuQXBpRGVzY3JpcHRpb25SZXNwb25zZUgAElcKGmluc3RhbGxlZF9sYXdfZGVjbGFyYXRpb25zGB4gASgLMjEubm9tb3Mua2VybmVsLnYxLkluc3RhbGxlZExhd0RlY2xhcmF0aW9uc1Jlc3BvbnNlSAASSwoYYXBwbGljYXRpb25fcmVzdWx0X2RlbHRhGB8gASgLMicubm9tb3Mua2VybmVsLnYxLkFwcGxpY2F0aW9uUmVzdWx0RGVsdGFIABJJChh2ZXJpZnlfY2hhaW5fZGlhZ25vc3RpY3MYFCABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcxIcCg9yZXN1bHRfZnJvbnRpZXIYICABKAlIAYgBARJCChJmdWxsX3Jlc3VsdF9yZWFzb24YISABKA4yIS5ub21vcy5rZXJuZWwudjEuRnVsbFJlc3VsdFJlYXNvbkgCiAEBEkMKE3Jlc3VsdF9kZXBlbmRlbmNpZXMYIiABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVhZERlcGVuZGVuY2llc0gDiAEBEkAKEXJlYWRfaW5kZXhfYmVoaW5kGCMgASgLMiAubm9tb3Mua2VybmVsLnYxLlJlYWRJbmRleEJlaGluZEgEiAEBQggKBnJlc3VsdEISChBfcmVzdWx0X2Zyb250aWVyQhUKE19mdWxsX3Jlc3VsdF9yZWFzb25CFgoUX3Jlc3VsdF9kZXBlbmRlbmNpZXNCFAoSX3JlYWRfaW5kZXhfYmVoaW5kIoABCg9SZWFkSW5kZXhCZWhpbmQSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIXCg9zZXJ2ZWRfZnJvbnRpZXIYAyABKAkSGgoScmVxdWVzdGVkX2Zyb250aWVyGAQgASgJEhUKDXN1Y2Nlc3Nvcl9sYXcYBSABKAgiVAoQUmVhZERlcGVuZGVuY2llcxIXCg9hZ2dyZWdhdGVfdHlwZXMYASADKAkSFgoOcmVhZHNfYXJjaGl2ZXMYAiABKAgSDwoHcmVhZF9hdBgDIAEoCSKCAQoWQXBwbGljYXRpb25SZXN1bHREZWx0YRIVCg1iYXNlX2Zyb250aWVyGAEgASgJEhAKCGZyb250aWVyGAIgASgJEioKDGNoYW5nZWRfcm93cxgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSEwoLcmVtb3ZlZF9pZHMYBCADKAkiMwoaT3BlbkFwaURlc2NyaXB0aW9uUmVzcG9uc2USFQoNZG9jdW1lbnRfanNvbhgBIAEoCSJxChtJbnRlcmZhY2VDb21wYXRpYmlsaXR5UXVlcnkSHwoXYXBwbGljYXRpb25fbWF0cml4X3VzZGEYASABKAwSMQoPY2FuZGlkYXRlX3VuaXRzGAIgAygLMhgubm9tb3Mua2VybmVsLnYxLkxhd1VuaXQisAIKFkludGVyZmFjZU1lbWJlclZlcmRpY3QSDgoGZG9tYWluGAEgASgJEjIKBGtpbmQYAiABKA4yJC5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlTWVtYmVyS2luZBIOCgZtZW1iZXIYAyABKAkSEgoFZmllbGQYBCABKAlIAIgBARI9CgZzdGF0dXMYBSABKA4yLS5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlQ29tcGF0aWJpbGl0eVN0YXR1cxI9CgZyZWFzb24YBiABKA4yLS5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlQ29tcGF0aWJpbGl0eVJlYXNvbhIXCgpkaWFnbm9zdGljGAcgASgJSAGIAQFCCAoGX2ZpZWxkQg0KC19kaWFnbm9zdGljIqIBCh5JbnRlcmZhY2VDb21wYXRpYmlsaXR5UmVzcG9uc2USEgoKY29tcGF0aWJsZRgBIAEoCBI4CgdtZW1iZXJzGAIgAygLMicubm9tb3Mua2VybmVsLnYxLkludGVyZmFjZU1lbWJlclZlcmRpY3QSGgoSd29ya3NwYWNlX2Zyb250aWVyGAMgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAQgASgJIv8BChRXYXJtUHJvZ3Jlc3NSZXNwb25zZRIbChNtYWludGVuYW5jZV9wZW5kaW5nGAEgASgIEiQKF3ByZXBhcmVkX2NvbW1hbmRfZG9tYWluGAIgASgJSACIAQESJQoYcHJlcGFyZWRfY29tbWFuZF9wYWNrYWdlGAMgASgJSAGIAQESJgoZcHJlcGFyZWRfY29tbWFuZF9zZWxlY3RvchgEIAEoCUgCiAEBQhoKGF9wcmVwYXJlZF9jb21tYW5kX2RvbWFpbkIbChlfcHJlcGFyZWRfY29tbWFuZF9wYWNrYWdlQhwKGl9wcmVwYXJlZF9jb21tYW5kX3NlbGVjdG9yImwKEFJlYWRJbmRleFBlbmRpbmcSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIaChJyZXF1ZXN0ZWRfZnJvbnRpZXIYAyABKAkSGQoRbGFzdF9yZWFkeV9hYnNlbnQYBCABKAki6AIKF01haW50ZW5hbmNlUXVhbnR1bVF1ZXJ5Eh0KEHJlcXVlc3RlZF9kb21haW4YASABKAlIAIgBARIeChFyZXF1ZXN0ZWRfcGFja2FnZRgCIAEoCUgBiAEBEiAKE3JlcXVlc3RlZF9kaXJlY3RpdmUYAyABKAlIAogBARIXCg9sb2NhbF9yZWFkX29ubHkYBCABKAgSHAoUbWFpbnRhaW5fZ2l0X2N1c3RvZHkYBSABKAgSFwoPcmVhZF9pbmRleF9vbmx5GAYgASgIEiQKHG1haW50YWluX2FkZHJlc3NlZF9mcm9udGllcnMYByABKAgSGAoQZmx1c2hfZHVyYWJpbGl0eRgIIAEoCBIZChFsb2NhbF93cml0ZV9idXJzdBgJIAEoCEITChFfcmVxdWVzdGVkX2RvbWFpbkIUChJfcmVxdWVzdGVkX3BhY2thZ2VCFgoUX3JlcXVlc3RlZF9kaXJlY3RpdmUiogQKGk1haW50ZW5hbmNlUXVhbnR1bVJlc3BvbnNlEhEKCXdvcmtzcGFjZRgBIAEoCRIbChNtYWludGVuYW5jZV9wZW5kaW5nGAIgASgIEjAKBXBoYXNlGAMgASgOMiEubm9tb3Mua2VybmVsLnYxLk1haW50ZW5hbmNlUGhhc2USGQoMZ2l0X2Zyb250aWVyGAQgASgJSACIAQESGgoNcmVhZF9mcm9udGllchgFIAEoCUgBiAEBEhwKD3NxbGl0ZV9mcm9udGllchgGIAEoCUgCiAEBEhIKCndvcmtfdW5pdHMYByABKAQSFgoOZWxhcHNlZF9taWNyb3MYCCABKAQSJAoXcHJlcGFyZWRfY29tbWFuZF9kb21haW4YCSABKAlIA4gBARIlChhwcmVwYXJlZF9jb21tYW5kX3BhY2thZ2UYCiABKAlIBIgBARImChlwcmVwYXJlZF9jb21tYW5kX3NlbGVjdG9yGAsgASgJSAWIAQESHgoWbG9vc2VfY3VzdG9keV9wcmVzc3VyZRgMIAEoCEIPCg1fZ2l0X2Zyb250aWVyQhAKDl9yZWFkX2Zyb250aWVyQhIKEF9zcWxpdGVfZnJvbnRpZXJCGgoYX3ByZXBhcmVkX2NvbW1hbmRfZG9tYWluQhsKGV9wcmVwYXJlZF9jb21tYW5kX3BhY2thZ2VCHAoaX3ByZXBhcmVkX2NvbW1hbmRfc2VsZWN0b3IiSAoNT3NnaUF0dHJpYnV0ZRIMCgRuYW1lGAEgASgJEg0KBXZhbHVlGAIgASgJEhEKBHR5cGUYAyABKAlIAIgBAUIHCgVfdHlwZSIsCg1Pc2dpRGlyZWN0aXZlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkiiwEKDk9zZ2lDYXBhYmlsaXR5EhEKCW5hbWVzcGFjZRgBIAEoCRIyCgphdHRyaWJ1dGVzGAIgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lBdHRyaWJ1dGUSMgoKZGlyZWN0aXZlcxgDIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpRGlyZWN0aXZlIowBCg9Pc2dpUmVxdWlyZW1lbnQSEQoJbmFtZXNwYWNlGAEgASgJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaUF0dHJpYnV0ZRIyCgpkaXJlY3RpdmVzGAMgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lEaXJlY3RpdmUimgEKFE9zZ2lSZXNvdXJjZVJlc3BvbnNlEhMKC3NvdXJjZV91c2RhGAEgASgMEjUKDGNhcGFiaWxpdGllcxgCIAMoCzIfLm5vbW9zLmtlcm5lbC52MS5Pc2dpQ2FwYWJpbGl0eRI2CgxyZXF1aXJlbWVudHMYAyADKAsyIC5ub21vcy5rZXJuZWwudjEuT3NnaVJlcXVpcmVtZW50IucBChNWZXJpZnlDaGFpblN0ZXBTcGFuEg0KBWluZGV4GAEgASgEEhIKCmNvbW1pdF9vaWQYAiABKAkSDgoGZG9tYWluGAMgASgJEhEKCWRpcmVjdGl2ZRgEIAEoCRIQCgh0b3RhbF91cxgFIAEoBBI2CgZwaGFzZXMYBiABKAsyJi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEkAKDmVuZ2luZV90aW1pbmdzGAcgAygLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRW5naW5lVGltaW5nIpgCChVWZXJpZnlDaGFpblN0ZXBQaGFzZXMSHgoWcnVudGltZV9sYXdfcmVmcmVzaF91cxgBIAEoBBITCgttYW5pZmVzdF91cxgCIAEoBBIZChFsYXdfcmVzb2x1dGlvbl91cxgDIAEoBBIdChVtYW5hZ2VkX3RyYW5zaXRpb25fdXMYBCABKAQSFAoMcHJpbmNpcGFsX3VzGAUgASgEEhQKDGV2b2x1dGlvbl91cxgGIAEoBBIaChJjb2xvY2F0ZWRfcmVhZHNfdXMYByABKAQSIQoZdHlwZWRfaW5zdGFsbF92ZXJpZmllcl91cxgIIAEoBBIUCgxhZG1pc3Npb25fdXMYCSABKAQSDwoHZm9sZF91cxgKIAEoBCLaBQoWVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcxIuCgR3YWxrGAEgASgOMiAubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluV2FsaxIQCgh0b3RhbF91cxgCIAEoBBIbChNyZWZlcmVuY2VfbG9va3VwX3VzGAMgASgEEhoKEnJlcG9zaXRvcnlfb3Blbl91cxgEIAEoBBIVCg1jaGFpbl9yZWFkX3VzGAUgASgEEhYKDmVuZ2luZV9pbml0X3VzGAYgASgEEhgKEHRpbWVsaW5lX3JlYWRfdXMYByABKAQSGAoQbGF3X2h5ZHJhdGlvbl91cxgIIAEoBBIbChNyZWNvdmVyeV9wcmVzY2FuX3VzGAkgASgEEhgKEGZvbGRfZnJvbnRpZXJfdXMYCiABKAQSMwoFc3RlcHMYCyADKAsyJC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwU3BhbhJACg5lbmdpbmVfdGltaW5ncxgMIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkVuZ2luZVRpbWluZxJNChVsYXdfaHlkcmF0aW9uX3RpbWluZ3MYDSADKAsyLi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5MYXdIeWRyYXRpb25UaW1pbmcSGQoRbGF3X2Nsb3N1cmVfY291bnQYDiABKAQSHgoWbGF3X2Nsb3N1cmVfY2FjaGVfaGl0cxgPIAEoBBIgChhsYXdfY2xvc3VyZV9jYWNoZV9taXNzZXMYECABKAQSEgoKc3RlcF9jb3VudBgRIAEoBBIVCg1zdGVwX3RvdGFsX3VzGBIgASgEEkEKEXN0ZXBfcGhhc2VfdG90YWxzGBMgASgLMiYubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluU3RlcFBoYXNlcxIaChJvbWl0dGVkX3N0ZXBfY291bnQYFCABKAQiOgoXVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcSDQoFcGhhc2UYASABKAkSEAoIdG90YWxfdXMYAiABKAQiQAodVmVyaWZ5Q2hhaW5MYXdIeWRyYXRpb25UaW1pbmcSDQoFcGhhc2UYASABKAkSEAoIdG90YWxfdXMYAiABKAQiqwEKFEh0dHBzRXhlY3V0aW9uUG9saWN5EjwKCXBsYWNlbWVudBgBIAEoDjIpLm5vbW9zLmtlcm5lbC52MS5FZmZlY3RFeGVjdXRpb25QbGFjZW1lbnQSQAoLY2FyZGluYWxpdHkYAiABKA4yKy5ub21vcy5rZXJuZWwudjEuRWZmZWN0RXhlY3V0aW9uQ2FyZGluYWxpdHkSEwoLbGF3X2Nsb3N1cmUYAyABKAkiWwoSSHR0cHNPdXRib3VuZFJvdXRlEgsKA3VybBgBIAEoCRI4CglleGVjdXRpb24YAiABKAsyJS5ub21vcy5rZXJuZWwudjEuSHR0cHNFeGVjdXRpb25Qb2xpY3kiKwoWV29ya3NwYWNlT3V0Ym91bmRSb3V0ZRIRCgl3b3Jrc3BhY2UYASABKAkihQIKFUNhcnJpZWRXb3Jrc3BhY2VPZmZlchIwCgZzb3VyY2UYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhUKDXNvdXJjZV9jb21taXQYAiABKAkSGQoRc291cmNlX29mZmVyX3BhdGgYAyABKAkSHAoUc291cmNlX2V2aWRlbmNlX3BhY2sYBSABKAwSIwobYWRtaXNzaW9uX2NoZWNrcG9pbnRfc2VjcmV0GAYgASgMEhUKDWVmZmVjdF9kaWdlc3QYByABKAkSIAoYc291cmNlX3dvcmtzcGFjZV9nZW5lc2lzGAggASgJSgQIBBAFUgZ0YXJnZXQizAQKDU91dGJvdW5kT2ZmZXISCgoCaWQYASABKAkSFwoLZGVzdGluYXRpb24YAiABKAlCAhgBEhQKDHNlYWxlZF9vZmZlchgDIAEoDBIUCgxjb250ZW50X3R5cGUYBCABKAkSGAoQc291cmNlX3dvcmtzcGFjZRgFIAEoCRIUCgxjdXN0b2R5X2hlYWQYBiABKAkSFwoPY2F1c2VkX2J5X29mZmVyGAcgASgJEhsKE3NjaGVkdWxlZF9hdF9taWxsaXMYCCABKAQSGgoSZGVhZGxpbmVfYXRfbWlsbGlzGAkgASgEEhQKDGN1c3RvZHlfcGF0aBgKIAEoCRITCgtjdXN0b2R5X29pZBgLIAEoCRIUCgxkZWxpdmVyeV9yZWYYDCABKAkSFQoNb2JsaWdhdGlvbl9pZBgNIAEoCRI6CgtodHRwc19yb3V0ZRgOIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5IdHRwc091dGJvdW5kUm91dGVIABJCCg93b3Jrc3BhY2Vfcm91dGUYDyABKAsyJy5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlT3V0Ym91bmRSb3V0ZUgAEhUKDXNvdXJjZV9jb21taXQYECABKAkSHAoUc291cmNlX2V2aWRlbmNlX3BhY2sYESABKAwSGQoRc291cmNlX29mZmVyX3BhdGgYEiABKAkSFQoNZWZmZWN0X2RpZ2VzdBgTIAEoCRIgChhzb3VyY2Vfd29ya3NwYWNlX2dlbmVzaXMYFCABKAlCBwoFcm91dGUi7gEKDk91dGJveFJlc3BvbnNlEi4KBm9mZmVycxgBIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5PdXRib3VuZE9mZmVyEh8KEm5leHRfZHVlX2F0X21pbGxpcxgCIAEoBEgAiAEBEi0KB2VudHJpZXMYAyADKAsyHC5ub21vcy5rZXJuZWwudjEuT3V0Ym94RW50cnkSFAoMd29ya19wZW5kaW5nGAQgASgIEhUKDWVudHJpZXNfdG90YWwYBSABKA0SGAoQZW50cmllc19wcmVwYXJlZBgGIAEoDUIVChNfbmV4dF9kdWVfYXRfbWlsbGlzIr0BCgtPdXRib3hFbnRyeRIKCgJpZBgBIAEoCRIZChFzb3VyY2Vfb2ZmZXJfcGF0aBgCIAEoCRI6CgtodHRwc19yb3V0ZRgDIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5IdHRwc091dGJvdW5kUm91dGVIABJCCg93b3Jrc3BhY2Vfcm91dGUYBCABKAsyJy5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlT3V0Ym91bmRSb3V0ZUgAQgcKBXJvdXRlIpQBChRQcmVwYXJlT3V0Ym91bmRPZmZlchIYChB0YXJnZXRfd29ya3NwYWNlGAEgASgJEhoKDXNvdXJjZV9jb21taXQYAiABKAlIAIgBARIeChFzb3VyY2Vfb2ZmZXJfcGF0aBgDIAEoCUgBiAEBQhAKDl9zb3VyY2VfY29tbWl0QhQKEl9zb3VyY2Vfb2ZmZXJfcGF0aCKJBQoMU3luY1Jlc3BvbnNlEhAKCGFkbWl0dGVkGAIgASgIEgwKBGhlYWQYAyABKAkSFgoOY2FuZGlkYXRlX2hlYWQYBCABKAkSHAoUYWRtaXR0ZWRfcmVtb3RlX2hlYWQYBSABKAkSHAoUcmVwbGF5ZWRfcmVtb3RlX2hlYWQYBiABKAkSPAoPYWRtaXR0ZWRfcmVtb3RlGAcgAygLMiMubm9tb3Mua2VybmVsLnYxLlN5bmNBZG1pdHRlZEludGVudBI8ChVyZW1vdGVfYmlydGhfb3V0Y29tZXMYCCADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lEjkKDnJlbW90ZV9yZWZ1c2FsGAkgASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZWZ1c2FsSACIAQESOwoOcmVwbGF5ZWRfbG9jYWwYCiADKAsyIy5ub21vcy5rZXJuZWwudjEuU3luY1JlcGxheWVkSW50ZW50EiAKGHNraXBwZWRfbG9jYWxfaW50ZW50X2lkcxgLIAMoCRI5Cg1yZWZ1c2VkX2xvY2FsGAwgAygLMiIubm9tb3Mua2VybmVsLnYxLlN5bmNSZWZ1c2VkSW50ZW50EkcKFGN1c3RvZHlfZGlzYWdyZWVtZW50GA0gASgLMiQubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlEaXNhZ3JlZW1lbnRIAYgBARIZChFwYXJrZWRfbG9jYWxfcmVmcxgOIAMoCRIWCg5yZXBsYXlfcGVuZGluZxgPIAEoCEIRCg9fcmVtb3RlX3JlZnVzYWxCFwoVX2N1c3RvZHlfZGlzYWdyZWVtZW50SgQIARACUgZyZXN1bHQiUQoTQ3VzdG9keURpc2FncmVlbWVudBISCgpsb2NhbF9oZWFkGAEgASgJEhYKDmNhbmRpZGF0ZV9oZWFkGAIgASgJEg4KBnJlYXNvbhgDIAEoCSJPChJTeW5jQWRtaXR0ZWRJbnRlbnQSEQoJaW50ZW50X2lkGAEgASgJEhgKEGNhbmRpZGF0ZV9jb21taXQYAiABKAkSDAoEaGVhZBgDIAEoCSJsChJTeW5jUmVwbGF5ZWRJbnRlbnQSEQoJaW50ZW50X2lkGAEgASgJEgwKBGhlYWQYAiABKAkSNQoOYmlydGhfb3V0Y29tZXMYAyADKAsyHS5ub21vcy5rZXJuZWwudjEuQmlydGhPdXRjb21lIqEBCgtTeW5jUmVmdXNhbBIWCglpbnRlbnRfaWQYASABKAlIAIgBARIOCgZyZWFzb24YAiABKAkSEQoEY29kZRgDIAEoCUgBiAEBEjQKB3JlZnVzYWwYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbEgCiAEBQgwKCl9pbnRlbnRfaWRCBwoFX2NvZGVCCgoIX3JlZnVzYWwijQEKEVN5bmNSZWZ1c2VkSW50ZW50EhEKCWludGVudF9pZBgBIAEoCRIOCgZyZWFzb24YAiABKAkSEwoLY2hhbmdlX3VzZGEYAyABKAwSNAoHcmVmdXNhbBgEIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsSACIAQFCCgoIX3JlZnVzYWwiQgoPV29ya3NwYWNlVGFyZ2V0EgwKBHJlcG8YASABKAkSEQoJd29ya3NwYWNlGAIgASgJEg4KBmJyYW5jaBgDIAEoCSJOCgtPcGVuUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Eg0KBXNwYW5zGAIgASgIIg4KDEdlbmVzaXNPZmZlciKjAQoNRGlyZWN0aXZlQ2FsbBIOCgZkb21haW4YASABKAkSEQoJZGlyZWN0aXZlGAIgASgJEicKCW9wZXJhdGlvbhgFIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSFgoOYXJndW1lbnRzX2pzb24YBiABKAlKBAgDEARKBAgEEAVSCWNhbGxfdXNkYVIHcGF5bG9hZFIObGVnYWN5X3BheWxvYWQi1gIKEEF1dGhvcmluZ09wdGlvbnMSDQoFYWN0b3IYASABKAkSEgoKYXV0aF90b2tlbhgCIAEoDBIVCg1hdXRob3Jfc2VjcmV0GAMgASgMEh0KEHZhbGlkX2Zyb21fZXBvY2gYBCABKARIAIgBARIfChJwcmluY2lwYWxfdmVyaWZpZWQYBSABKAhIAYgBARILCgNybmcYBiADKAESGAoQZGVmZXJfcHJvamVjdGlvbhgHIAEoCBINCgVzcGFucxgIIAEoCBIPCgdkcnlfcnVuGAkgASgIEhAKCHNlcXVlbmNlGAogASgEEi0KBWNsb2NrGAsgASgLMh4ubm9tb3Mua2VybmVsLnYxLkNhcHR1cmVkQ2xvY2sSFAoMcHJlcGFyZV9vbmx5GAwgASgIQhMKEV92YWxpZF9mcm9tX2Vwb2NoQhUKE19wcmluY2lwYWxfdmVyaWZpZWQiSgoNQ2FwdHVyZWRDbG9jaxIXCg9waHlzaWNhbF9taWxsaXMYASABKAQSDwoHbG9naWNhbBgCIAEoDRIPCgdyZXBsaWNhGAMgASgEIsMDChBCaXJ0aENlcnRpZmljYXRlEg0KBWNoaWxkGAEgASgJEg8KB2ZvdW5kZXIYAiABKAkSEAoIdmVyaWZpZWQYAyABKAgSEgoKcGFyZW50X2tleRgEIAEoDBIRCglwYXJlbnRfaWQYBSABKAkSDQoFZXBvY2gYBiABKAMSEQoJc2lnbmF0dXJlGAcgASgMEhkKDHZlcmlmaWVkX3ZpYRgIIAEoCUgAiAEBEhYKCWlkcF90b2tlbhgJIAEoCUgBiAEBEhsKDmNhcHR1cmVkX2Nsb2NrGAogASgDSAKIAQESIQoUYXV0aF9wcm92aWRlcl9pc3N1ZXIYCyABKAlIA4gBARIfChJhdXRoX3Byb3ZpZGVyX2p3a3MYDCABKAlIBIgBARIjChZhdXRoX3Byb3ZpZGVyX2F1ZGllbmNlGA0gASgJSAWIAQFCDwoNX3ZlcmlmaWVkX3ZpYUIMCgpfaWRwX3Rva2VuQhEKD19jYXB0dXJlZF9jbG9ja0IXChVfYXV0aF9wcm92aWRlcl9pc3N1ZXJCFQoTX2F1dGhfcHJvdmlkZXJfandrc0IZChdfYXV0aF9wcm92aWRlcl9hdWRpZW5jZSJsChtTaWduQmlydGhDZXJ0aWZpY2F0ZVJlcXVlc3QSNgoLY2VydGlmaWNhdGUYASABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZRIVCg1zaWduZXJfc2VjcmV0GAIgASgMIlYKHFNpZ25CaXJ0aENlcnRpZmljYXRlUmVzcG9uc2USNgoLY2VydGlmaWNhdGUYASABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZSLsAgoUTW9kZWxMaWZlY3ljbGVJbnRlbnQSOwoJb3BlcmF0aW9uGAEgASgOMigubm9tb3Mua2VybmVsLnYxLk1vZGVsTGlmZWN5Y2xlT3BlcmF0aW9uEhQKDGluc3RhbGxlZF9ieRgCIAEoCRIXCgpzdXBlcnNlZGVzGAMgASgJSACIAQESRAoKdHJhbnNpdGlvbhgEIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25SZXNwb25zZUgBiAEBEhUKCHJlcGxhY2VzGAUgASgJSAKIAQESHgoRYWNjZXB0YW5jZV9yZWFzb24YBiABKAlIA4gBARIZCgxsYXdfaWRlbnRpdHkYByABKAlIBIgBAUINCgtfc3VwZXJzZWRlc0INCgtfdHJhbnNpdGlvbkILCglfcmVwbGFjZXNCFAoSX2FjY2VwdGFuY2VfcmVhc29uQg8KDV9sYXdfaWRlbnRpdHkiOwofSWRlbnRpdHlQcm92aWRlcldpdG5lc3NBZG9wdGlvbhIYChBzb3VyY2Vfd29ya3NwYWNlGAEgASgJIucHCgxPZmZlclJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIuCgRjYWxsGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLkRpcmVjdGl2ZUNhbGxIABIcChJzZWFsZWRfY2hhbmdlX3VzZGEYByABKAxIABJACg9tb2RlbF9saWZlY3ljbGUYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuTW9kZWxMaWZlY3ljbGVJbnRlbnRIABJeCiJpZGVudGl0eV9wcm92aWRlcl93aXRuZXNzX2Fkb3B0aW9uGA0gASgLMjAubm9tb3Mua2VybmVsLnYxLklkZW50aXR5UHJvdmlkZXJXaXRuZXNzQWRvcHRpb25IABIwCgdnZW5lc2lzGA4gASgLMh0ubm9tb3Mua2VybmVsLnYxLkdlbmVzaXNPZmZlckgAEkkKF2NhcnJpZWRfd29ya3NwYWNlX29mZmVyGA8gASgLMiYubm9tb3Mua2VybmVsLnYxLkNhcnJpZWRXb3Jrc3BhY2VPZmZlckgAEjQKCXBsYWNlbWVudBgQIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5QbGFjZW1lbnRPZmZlckgAEkcKFmRldGFjaGVkX3NpZ25lZF9jaGFuZ2UYEiABKAsyJS5ub21vcy5rZXJuZWwudjEuRGV0YWNoZWRTaWduZWRDaGFuZ2VIABI0CglhdXRob3JpbmcYAyABKAsyIS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaW5nT3B0aW9ucxIQCghsYXdfdXNkehgEIAEoDBIzCgxhdHRlc3RhdGlvbnMYBSADKAsyHS5ub21vcy5rZXJuZWwudjEuQXR0ZXN0ZWRSZWFkEj0KEmNvbmZsaWN0X3NuYXBzaG90cxgGIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5Db25mbGljdFNuYXBzaG90EhoKEmV4ZWN1dGlvbl9sYXdfdXNkehgIIAEoDBIgChNjb250cm9sbGVyX2xhd19oYXNoGAkgASgJSAGIAQESHQoQY2FuZGlkYXRlX2NvbW1pdBgKIAEoCUgCiAEBEjwKEWJpcnRoX2NlcnRpZmljYXRlGAsgASgLMiEubm9tb3Mua2VybmVsLnYxLkJpcnRoQ2VydGlmaWNhdGUSKwoJbGF3X3VuaXRzGBEgAygLMhgubm9tb3Mua2VybmVsLnYxLkxhd1VuaXRCCAoGaW50ZW50QhYKFF9jb250cm9sbGVyX2xhd19oYXNoQhMKEV9jYW5kaWRhdGVfY29tbWl0IjYKB0xhd1VuaXQSKwoFZmlsZXMYASADKAsyHC5ub21vcy5rZXJuZWwudjEuTGF3VW5pdEZpbGUiLAoLTGF3VW5pdEZpbGUSDAoEcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgMIsUBCgxBdHRlc3RlZFJlYWQSEAoIcXVlcnlfaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EisKBnJlc3VsdBgDIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlEjIKCGV2aWRlbmNlGAUgASgLMiAubm9tb3Mua2VybmVsLnYxLlJlYWRBdHRlc3RhdGlvbkoECAQQBVILYXR0ZXN0YXRpb24i1QEKD1JlYWRBdHRlc3RhdGlvbhIPCgd2ZXJzaW9uGAEgASgDEhgKEHNvdXJjZV93b3Jrc3BhY2UYAiABKAkSFgoOc291cmNlX2dlbmVzaXMYAyABKAkSEwoLc291cmNlX2hlYWQYBCABKAkSEQoJZm9sZF9yb290GAUgASgJEhQKDHNvdXJjZV9lcG9jaBgGIAEoAxIaChJhdHRlc3RlZF9hdF9taWxsaXMYByABKAMSEgoKcHVibGljX2tleRgIIAEoDBIRCglzaWduYXR1cmUYCSABKAwidQoQQ29uZmxpY3RTbmFwc2hvdBIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSDQoFZmllbGQYAyABKAkSFQoNdGFyZ2V0X3NjaGVtYRgEIAEoCRINCgV0b2tlbhgFIAEoCSKqDwoMUXVlcnlSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSMgoJYXV0aG9yaXR5GAIgASgLMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5QXV0aG9yaXR5Eg0KBXNwYW5zGAMgASgIEjkKDXJlc3VsdF9mb3JtYXQYBCABKA4yIi5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXN1bHRGb3JtYXQSGAoQc2VydmVfbGFzdF9yZWFkeRgFIAEoCBIqCgRyb3dzGAogASgLMhoubm9tb3Mua2VybmVsLnYxLlJvd3NRdWVyeUgAEioKBHBhZ2UYCyABKAsyGi5ub21vcy5rZXJuZWwudjEuUGFnZVF1ZXJ5SAASKwoFYnlfaWQYDCABKAsyGi5ub21vcy5rZXJuZWwudjEuQnlJZFF1ZXJ5SAASOQoMcmVzb2x2ZV9yZWZzGA0gASgLMiEubm9tb3Mua2VybmVsLnYxLlJlc29sdmVSZWZzUXVlcnlIABJFChJyZWZlcmVuY2VfdmVyc2lvbnMYDiABKAsyJy5ub21vcy5rZXJuZWwudjEuUmVmZXJlbmNlVmVyc2lvbnNRdWVyeUgAEiwKBWNvdW50GA8gASgLMhsubm9tb3Mua2VybmVsLnYxLlRhbGx5UXVlcnlIABIqCgNzdW0YECABKAsyGy5ub21vcy5rZXJuZWwudjEuVGFsbHlRdWVyeUgAEjAKB3NwYXRpYWwYESABKAsyHS5ub21vcy5rZXJuZWwudjEuU3BhdGlhbFF1ZXJ5SAASLAoFbmFtZWQYEiABKAsyGy5ub21vcy5rZXJuZWwudjEuTmFtZWRRdWVyeUgAEkkKE2F1dGhvcml6YXRpb25fY2hlY2sYEyABKAsyKi5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNoZWNrUmVxdWVzdEgAEksKFGF1dGhvcml6YXRpb25fZXhwYW5kGBQgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXF1ZXN0SAASSQoTZnJvbnRpZXJfdHJhbnNpdGlvbhgVIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25SZXF1ZXN0SAASLwoHYnlfdHlwZRgWIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5CeVR5cGVRdWVyeUgAEkgKFG93bmVkX2RldmljZV9yZXF1ZXN0GBcgASgLMigubm9tb3Mua2VybmVsLnYxLk93bmVkRGV2aWNlUmVxdWVzdFF1ZXJ5SAASTAoWb3duZWRfcHJlcGFyZV9hcHByb3ZhbBgYIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5Pd25lZFByZXBhcmVBcHByb3ZhbFF1ZXJ5SAASQwoRcGVuZGluZ19jb25mbGljdHMYGSABKAsyJi5ub21vcy5rZXJuZWwudjEuUGVuZGluZ0NvbmZsaWN0c1F1ZXJ5SAASUAoYcGVuZGluZ19jb25mbGljdF9zdW1tYXJ5GBogASgLMiwubm9tb3Mua2VybmVsLnYxLlBlbmRpbmdDb25mbGljdFN1bW1hcnlRdWVyeUgAEk0KFmF1dGhlbnRpY2F0aW9uX3Bvc3R1cmUYGyABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aGVudGljYXRpb25Qb3N0dXJlUXVlcnlIABJAChBjaGlsZF93b3Jrc3BhY2VzGBwgASgLMiQubm9tb3Mua2VybmVsLnYxLkNoaWxkV29ya3NwYWNlUXVlcnlIABJWChZhdXRob3JpbmdfcmVxdWlyZW1lbnRzGB0gASgLMjQubm9tb3Mua2VybmVsLnYxLkRpcmVjdGl2ZUF1dGhvcmluZ1JlcXVpcmVtZW50c1F1ZXJ5SAASUgoZaWRlbnRpdHlfcHJvdmlkZXJfd2l0bmVzcxgeIAEoCzItLm5vbW9zLmtlcm5lbC52MS5JZGVudGl0eVByb3ZpZGVyV2l0bmVzc1F1ZXJ5SAASTwoXaW50ZXJmYWNlX2NvbXBhdGliaWxpdHkYHyABKAsyLC5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlQ29tcGF0aWJpbGl0eVF1ZXJ5SAASRwoTbWFpbnRlbmFuY2VfcXVhbnR1bRggIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5NYWludGVuYW5jZVF1YW50dW1RdWVyeUgAEkQKEmZ1bGxfaGlzdG9yeV9hdWRpdBghIAEoCzImLm5vbW9zLmtlcm5lbC52MS5GdWxsSGlzdG9yeUF1ZGl0UXVlcnlIABJQChh3b3Jrc3BhY2VfZWZmZWN0X3JlY2VpcHQYIiABKAsyLC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlRWZmZWN0UmVjZWlwdFF1ZXJ5SAASVAoaaW5zdGFsbGVkX2xhd19kZWNsYXJhdGlvbnMYIyABKAsyLi5ub21vcy5rZXJuZWwudjEuSW5zdGFsbGVkTGF3RGVjbGFyYXRpb25zUXVlcnlIAEIHCgVxdWVyeSJWChtXb3Jrc3BhY2VFZmZlY3RSZWNlaXB0UXVlcnkSIAoYc291cmNlX3dvcmtzcGFjZV9nZW5lc2lzGAEgASgJEhUKDWVmZmVjdF9kaWdlc3QYAiABKAki5AEKHldvcmtzcGFjZUVmZmVjdFJlY2VpcHRSZXNwb25zZRIYChB0YXJnZXRfd29ya3NwYWNlGAEgASgJEiAKGHRhcmdldF93b3Jrc3BhY2VfZ2VuZXNpcxgCIAEoCRIVCg1vYnNlcnZlZF9oZWFkGAMgASgJEiAKGHNvdXJjZV93b3Jrc3BhY2VfZ2VuZXNpcxgEIAEoCRIVCg1lZmZlY3RfZGlnZXN0GAUgASgJEh8KEmFkbWl0dGVkX2ludGVudF9pZBgGIAEoCUgAiAEBQhUKE19hZG1pdHRlZF9pbnRlbnRfaWQiFwoVRnVsbEhpc3RvcnlBdWRpdFF1ZXJ5IrADChhGdWxsSGlzdG9yeUF1ZGl0UmVzcG9uc2USDQoFdmFsaWQYASABKAgSLgoEd2FsaxgCIAEoDjIgLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbldhbGsSEQoEaGVhZBgDIAEoCUgAiAEBEhQKB2ludGVudHMYBCABKARIAYgBARIYCgtwbGFuc19yZXJ1bhgFIAEoBEgCiAEBEhwKD2NvbnRyb2xsZXJfaGFzaBgGIAEoCUgDiAEBEhkKEWluc3RhbGxlZF9kb21haW5zGAcgAygJEhIKBWNoZWNrGAggASgJSASIAQESFQoIYXRfaW5kZXgYCSABKARIBYgBARISCgVlcnJvchgKIAEoCUgGiAEBEjQKB3JlZnVzYWwYCyABKAsyHi5ub21vcy5rZXJuZWwudjEuS2VybmVsUmVmdXNhbEgHiAEBQgcKBV9oZWFkQgoKCF9pbnRlbnRzQg4KDF9wbGFuc19yZXJ1bkISChBfY29udHJvbGxlcl9oYXNoQggKBl9jaGVja0ILCglfYXRfaW5kZXhCCAoGX2Vycm9yQgoKCF9yZWZ1c2FsIh4KHElkZW50aXR5UHJvdmlkZXJXaXRuZXNzUXVlcnkiiwIKGklkZW50aXR5UHJvdmlkZXJXaXRuZXNzS2V5Eg8KB29yZGluYWwYASABKAQSCwoDa3R5GAIgASgJEhAKA2tpZBgDIAEoCUgAiAEBEhAKA2FsZxgEIAEoCUgBiAEBEhAKA3VzZRgFIAEoCUgCiAEBEhAKA2NydhgGIAEoCUgDiAEBEg4KAXgYByABKAlIBIgBARIOCgF5GAggASgJSAWIAQESDgoBbhgJIAEoCUgGiAEBEg4KAWUYCiABKAlIB4gBARIPCgdrZXlfb3BzGAsgAygJQgYKBF9raWRCBgoEX2FsZ0IGCgRfdXNlQgYKBF9jcnZCBAoCX3hCBAoCX3lCBAoCX25CBAoCX2UiYwoiSWRlbnRpdHlQcm92aWRlcldpdG5lc3NDZXJ0aWZpY2F0ZRITCgtrZXlfb3JkaW5hbBgBIAEoBBIbChNjZXJ0aWZpY2F0ZV9vcmRpbmFsGAIgASgEEgsKA2RlchgDIAEoDCLFBAofSWRlbnRpdHlQcm92aWRlcldpdG5lc3NSZXNwb25zZRIYChBzb3VyY2Vfd29ya3NwYWNlGAEgASgJEhYKDnNvdXJjZV9nZW5lc2lzGAIgASgJEhMKC3NvdXJjZV9oZWFkGAMgASgJEg0KBWVwb2NoGAQgASgEEh8KEnByZWRlY2Vzc29yX3NoYTI1NhgFIAEoDEgAiAEBEg4KBmlzc3VlchgGIAEoCRIVCghhdWRpZW5jZRgHIAEoCUgBiAEBEhcKD3ByaW5jaXBhbF9jbGFpbRgIIAEoCRIhChRkZXZpY2VfYmluZGluZ19jbGFpbRgJIAEoCUgCiAEBEh4KFnJlcXVpcmVfZGV2aWNlX2JpbmRpbmcYCiABKAgSOQoEa2V5cxgLIAMoCzIrLm5vbW9zLmtlcm5lbC52MS5JZGVudGl0eVByb3ZpZGVyV2l0bmVzc0tleRJJCgxjZXJ0aWZpY2F0ZXMYDCADKAsyMy5ub21vcy5rZXJuZWwudjEuSWRlbnRpdHlQcm92aWRlcldpdG5lc3NDZXJ0aWZpY2F0ZRIXCg9tYXRlcmlhbF9zaGEyNTYYDSABKAwSMwoMYXR0ZXN0YXRpb25zGA8gAygLMh0ubm9tb3Mua2VybmVsLnYxLkF0dGVzdGVkUmVhZEIVChNfcHJlZGVjZXNzb3Jfc2hhMjU2QgsKCV9hdWRpZW5jZUIXChVfZGV2aWNlX2JpbmRpbmdfY2xhaW1KBAgOEA9SEXNvdXJjZV9wcm9vZl91c2RhIhUKE0NoaWxkV29ya3NwYWNlUXVlcnkikAEKGUNoaWxkV29ya3NwYWNlUXVlcnlSZWNvcmQSEQoJd29ya3NwYWNlGAEgASgJEj4KBnN0YXR1cxgCIAEoDjIuLm5vbW9zLmtlcm5lbC52MS5DaGlsZFdvcmtzcGFjZUxpZmVjeWNsZVN0YXR1cxIUCgdib3JuX2F0GAMgASgJSACIAQFCCgoIX2Jvcm5fYXQiWwobQ2hpbGRXb3Jrc3BhY2VRdWVyeVJlc3BvbnNlEjwKCGNoaWxkcmVuGAEgAygLMioubm9tb3Mua2VybmVsLnYxLkNoaWxkV29ya3NwYWNlUXVlcnlSZWNvcmQiHwodSW5zdGFsbGVkTGF3RGVjbGFyYXRpb25zUXVlcnkiNwoQSW5zdGFsbGVkTGF3VW5pdBIQCgh1bml0X2tleRgBIAEoCRIRCgl1bml0X2hhc2gYAiABKAkijAEKE0luc3RhbGxlZExhd1VuaXRTZXQSFAoMc2V0X2lkZW50aXR5GAEgASgJEhgKEGNvbXBvc2VyX3ZlcnNpb24YAiABKAkSEwoLb3BlbnVzZF9yZXYYAyABKAkSMAoFdW5pdHMYBCADKAsyIS5ub21vcy5rZXJuZWwudjEuSW5zdGFsbGVkTGF3VW5pdCKBAgoeRGVjbGFyZWRBdXRoZW50aWNhdGlvblByb3ZpZGVyEg4KBmRvbWFpbhgBIAEoCRIOCgZtZW1iZXIYAiABKAkSOwoLbWVtYmVyX2tpbmQYAyABKA4yJi5ub21vcy5rZXJuZWwudjEuRGVjbGFyZWRMYXdNZW1iZXJLaW5kEkEKBGtpbmQYBCABKA4yMy5ub21vcy5rZXJuZWwudjEuRGVjbGFyZWRBdXRoZW50aWNhdGlvblByb3ZpZGVyS2luZBINCgVzY29wZRgFIAEoCRIcCg9pZGVudGl0eV9zaGEyNTYYBiABKAlIAIgBAUISChBfaWRlbnRpdHlfc2hhMjU2IukBCh9JbnN0YWxsZWRMYXdDbG9zdXJlRGVjbGFyYXRpb25zEhgKEGNsb3N1cmVfaWRlbnRpdHkYASABKAkSDwoHZG9tYWlucxgCIAMoCRI7Cgh1bml0X3NldBgDIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5JbnN0YWxsZWRMYXdVbml0U2V0SACIAQESUQoYYXV0aGVudGljYXRpb25fcHJvdmlkZXJzGAQgAygLMi8ubm9tb3Mua2VybmVsLnYxLkRlY2xhcmVkQXV0aGVudGljYXRpb25Qcm92aWRlckILCglfdW5pdF9zZXQidAogSW5zdGFsbGVkTGF3RGVjbGFyYXRpb25zUmVzcG9uc2USDAoEaGVhZBgBIAEoCRJCCghjbG9zdXJlcxgCIAMoCzIwLm5vbW9zLmtlcm5lbC52MS5JbnN0YWxsZWRMYXdDbG9zdXJlRGVjbGFyYXRpb25zIsoBCiNEaXJlY3RpdmVBdXRob3JpbmdSZXF1aXJlbWVudHNRdWVyeRIRCglkaXJlY3RpdmUYASABKAkSFgoJcHJpbmNpcGFsGAIgASgJSACIAQESFwoKcHVibGljX2tleRgDIAEoDEgBiAEBEhUKCGtleV9oYXNoGAQgASgJSAKIAQESEwoGZG9tYWluGAUgASgJSAOIAQFCDAoKX3ByaW5jaXBhbEINCgtfcHVibGljX2tleUILCglfa2V5X2hhc2hCCQoHX2RvbWFpbiKMAgomRGlyZWN0aXZlQXV0aG9yaW5nUmVxdWlyZW1lbnRzUmVzcG9uc2USDQoFZm91bmQYASABKAgSEwoGZG9tYWluGAIgASgJSACIAQESFQoIcmVsYXRpb24YAyABKAlIAYgBARITCgZvYmplY3QYBCABKAlIAogBARISCgVhY3RvchgFIAEoCUgDiAEBEhUKCGtleV9oYXNoGAYgASgJSASIAQESFwoPc2lnbmVyX2Vucm9sbGVkGAcgASgIEhQKDHJvbGVfYWxsb3dlZBgIIAEoCEIJCgdfZG9tYWluQgsKCV9yZWxhdGlvbkIJCgdfb2JqZWN0QggKBl9hY3RvckILCglfa2V5X2hhc2gicgoaQXV0aGVudGljYXRpb25Qb3N0dXJlUXVlcnkSHgoWaW5jbHVkZV9iaXJ0aF9ldmlkZW5jZRgBIAEoCBIeChFkZXZpY2VfcHVibGljX2tleRgCIAEoDEgAiAEBQhQKEl9kZXZpY2VfcHVibGljX2tleSLsAgodQXV0aGVudGljYXRpb25Qb3N0dXJlUmVzcG9uc2USSAoOcHJvdmlkZXJfdG9rZW4YASABKA4yMC5ub21vcy5rZXJuZWwudjEuUHJvdmlkZXJUb2tlblZlcmlmaWNhdGlvblN0YXR1cxIXCg9lbnJvbGxlZF9kZXZpY2UYAiABKAgSGgoScmVzb2x2ZWRfcHJpbmNpcGFsGAMgASgJEkQKDmJpcnRoX2V2aWRlbmNlGAQgASgLMicubm9tb3Mua2VybmVsLnYxLkJpcnRoRXZpZGVuY2VSZWFkaW5lc3NIAIgBARJBChRkZXZpY2Vfc2lnbmVyX3N0YXR1cxgFIAEoDjIjLm5vbW9zLmtlcm5lbC52MS5EZXZpY2VTaWduZXJTdGF0dXMSGgoSZGV2aWNlX2tleV9zdWJqZWN0GAYgASgJEhQKDHNpZ25lcl9lcG9jaBgHIAEoA0IRCg9fYmlydGhfZXZpZGVuY2UiXgoWQmlydGhFdmlkZW5jZVJlYWRpbmVzcxI0CgZzdGF0dXMYASABKA4yJC5ub21vcy5rZXJuZWwudjEuQmlydGhFdmlkZW5jZVN0YXR1cxIOCgZkZXRhaWwYAiABKAkiKAoXT3duZWREZXZpY2VSZXF1ZXN0UXVlcnkSDQoFc2NvcGUYASABKAkiMgoaT3duZWREZXZpY2VSZXF1ZXN0UmVzcG9uc2USFAoMcmVxdWVzdF91c2RhGAEgASgMIkAKGU93bmVkUHJlcGFyZUFwcHJvdmFsUXVlcnkSDQoFc2NvcGUYASABKAkSFAoMcmVxdWVzdF91c2RhGAIgASgMIr8BChxPd25lZFByZXBhcmVBcHByb3ZhbFJlc3BvbnNlEhcKD25ld19rZXlfc3ViamVjdBgBIAEoCRIaChJvd25lZF9jdXN0b2R5X3VzZGEYAiABKAwSFAoMdmVyaWZpZWRfdmlhGAMgASgJEhgKEHZhbGlkX2Zyb21fZXBvY2gYBCABKAQSHwoXYXBwcm92ZWRfYXRfdW5peF9taWxsaXMYBSABKAQSGQoRb3duZWRfa2V5X3N1YmplY3QYBiABKAkikgEKDlF1ZXJ5QXV0aG9yaXR5EhcKD3ByaW5jaXBhbF9jbGFpbRgBIAEoCRISCgphdXRoX3Rva2VuGAIgASgMEhAKCG5vd191bml4GAMgASgEEhUKDWF1dGhvcl9zZWNyZXQYBCABKAwSKgoEa2V5cxgFIAMoCzIcLm5vbW9zLmtlcm5lbC52MS5JbmplY3RlZEtleSI4CgtJbmplY3RlZEtleRINCgVzY29wZRgBIAEoCRINCgVlcG9jaBgCIAEoBBILCgNrZXkYAyABKAwi2AEKCVJvd3NRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJcHJpbmNpcGFsGAMgASgJEhYKDmFyZ3VtZW50c191c2RhGAQgASgMEjMKFWFwcGxpY2F0aW9uX2FyZ3VtZW50cxgFIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSGwoOc2luY2VfZnJvbnRpZXIYBiABKAlIAIgBAUIRCg9fc2luY2VfZnJvbnRpZXIixgEKCVBhZ2VRdWVyeRIKCgJpZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSDQoFbGltaXQYAyABKA0SDQoFYWZ0ZXIYBCABKAkSEQoJcHJpbmNpcGFsGAUgASgJEhYKDmFyZ3VtZW50c191c2RhGAYgASgMEjMKFWFwcGxpY2F0aW9uX2FyZ3VtZW50cxgHIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkiTAoJQnlJZFF1ZXJ5EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhQKDGFnZ3JlZ2F0ZV9pZBgCIAEoCRIRCglwcmluY2lwYWwYAyABKAkiOAoLQnlUeXBlUXVlcnkSFgoOYWdncmVnYXRlX3R5cGUYASABKAkSEQoJcHJpbmNpcGFsGAIgASgJIlwKCE5vbW9zUmVmEhEKCXdvcmtzcGFjZRgBIAEoCRIWCg5hZ2dyZWdhdGVfdHlwZRgCIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAyABKAkSDwoHdmVyc2lvbhgEIAEoCSJOChBSZXNvbHZlUmVmc1F1ZXJ5EicKBHJlZnMYASADKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSEQoJcHJpbmNpcGFsGAIgASgJIk4KFlJlZmVyZW5jZVZlcnNpb25zUXVlcnkSNAoEcmVmcxgBIAMoCzImLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uQ2hlY2sihAEKFVJlZmVyZW5jZVZlcnNpb25DaGVjaxIpCgZwaW5uZWQYASABKAsyGS5ub21vcy5rZXJuZWwudjEuTm9tb3NSZWYSKQoGc2VyaWVzGAIgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhUKDWN1cnJlbnRfZmllbGQYAyABKAkiYgoKVGFsbHlRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSFgoJZ3JvdXBfa2V5GAQgASgJSACIAQFCDAoKX2dyb3VwX2tleUoECAIQA1IJYXJndW1lbnRzInoKDFNwYXRpYWxRdWVyeRIKCgJpZBgBIAEoCRIRCglwcmluY2lwYWwYAyABKAkSDQoFbWluX3gYBCABKAESDQoFbWluX3kYBSABKAESDQoFbWF4X3gYBiABKAESDQoFbWF4X3kYByABKAFKBAgCEANSCWFyZ3VtZW50cyJaChVQZW5kaW5nQ29uZmxpY3RzUXVlcnkSGwoOYWdncmVnYXRlX3R5cGUYASABKAlIAIgBARIRCglwcmluY2lwYWwYAiABKAlCEQoPX2FnZ3JlZ2F0ZV90eXBlIjAKG1BlbmRpbmdDb25mbGljdFN1bW1hcnlRdWVyeRIRCglwcmluY2lwYWwYASABKAkicQoKTmFtZWRRdWVyeRIyCglvcGVyYXRpb24YASABKA4yHy5ub21vcy5rZXJuZWwudjEuUXVlcnlPcGVyYXRpb24SLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0IuQBChlGcm9udGllclRyYW5zaXRpb25SZXF1ZXN0Eg4KBmRvbWFpbhgBIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgCIAEoCRIPCgdhdF9oYXNoGAMgASgJEiEKGWFja25vd2xlZGdlbWVudF9wcmluY2lwYWwYBCABKAkSIAoTcmVzdG9yZV9wcmV2aW91c19vZhgFIAEoCUgAiAEBEjEKD2NhbmRpZGF0ZV91bml0cxgGIAMoCzIYLm5vbW9zLmtlcm5lbC52MS5MYXdVbml0QhYKFF9yZXN0b3JlX3ByZXZpb3VzX29mIloKJUZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSGAoQc291cmNlX3N0YWJsZV9pZBgBIAEoCRIXCg9hY2tub3dsZWRnZW1lbnQYAiABKAki9QEKHkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9ucxIPCgdyZXRpcmVkGAEgAygJEkcKB3JldHlwZWQYAiADKAsyNi5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25NYXBFbnRyeRJHCgdyZWJpbmRzGAMgAygLMjYubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSHAoPYWNrbm93bGVkZ2VkX2J5GAQgASgJSACIAQFCEgoQX2Fja25vd2xlZGdlZF9ieSI9ChtGcm9udGllclRyYW5zaXRpb25WaW9sYXRpb24SDgoGZG9tYWluGAEgASgJEg4KBmRldGFpbBgCIAEoCSLXAgoaRnJvbnRpZXJUcmFuc2l0aW9uUmVzcG9uc2USDwoHYXRfaGFzaBgBIAEoCRIZCgxjdXJyZW50X2hhc2gYAiABKAlIAIgBARIVCg1hdF9zdGF0ZV9yb290GAMgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAQgASgJEg4KBmRvbWFpbhgFIAEoCRIPCgdkb21haW5zGAYgAygJEg0KBXJlYWR5GAcgASgIEkAKCnZpb2xhdGlvbnMYCCADKAsyLC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uVmlvbGF0aW9uEkoKDGRpc3Bvc2l0aW9ucxgJIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbnNIAYgBAUIPCg1fY3VycmVudF9oYXNoQg8KDV9kaXNwb3NpdGlvbnMiLwoTQXV0aG9yaXphdGlvbk9iamVjdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJIlQKFEF1dGhvcml6YXRpb25TdWJqZWN0EgwKBHR5cGUYASABKAkSCgoCaWQYAiABKAkSFQoIcmVsYXRpb24YAyABKAlIAIgBAUILCglfcmVsYXRpb24inAEKGFJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhAKCHJlbGF0aW9uGAIgASgJEjYKB3N1YmplY3QYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QigQEKGEF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRIjChljdXJyZW50X3ZlcmlmaWVkX2Zyb250aWVyGAEgASgISAASGQoPYXRfbGVhc3RfY29tbWl0GAIgASgJSAASFgoMZXhhY3RfY29tbWl0GAMgASgJSABCDQoLcmVxdWlyZW1lbnQiZgodQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSFAoMY29uZGl0aW9uX2lkGAEgASgJEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCL3AgoZQXV0aG9yaXphdGlvbkNoZWNrUmVxdWVzdBI2CghyZXNvdXJjZRgBIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uT2JqZWN0EhIKCnBlcm1pc3Npb24YAiABKAkSNgoHc3ViamVjdBgDIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uU3ViamVjdBI+Cgtjb25zaXN0ZW5jeRgEIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSPwoHY29udGV4dBgFIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIgChNleHBlY3RlZF9tb2RlbF9oYXNoGAYgASgJSACIAQESGwoTaW5jbHVkZV9leHBsYW5hdGlvbhgHIAEoCEIWChRfZXhwZWN0ZWRfbW9kZWxfaGFzaCLtAgoaQXV0aG9yaXphdGlvbkV4cGFuZFJlcXVlc3QSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBISCgpwZXJtaXNzaW9uGAIgASgJEj4KC2NvbnNpc3RlbmN5GAMgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25zaXN0ZW5jeRI/Cgdjb250ZXh0GAQgAygLMi4ubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EiAKE2V4cGVjdGVkX21vZGVsX2hhc2gYBSABKAlIAIgBARINCgVsaW1pdBgGIAEoDRISCgVhZnRlchgHIAEoCUgBiAEBEhsKE2luY2x1ZGVfZXhwbGFuYXRpb24YCCABKAhCFgoUX2V4cGVjdGVkX21vZGVsX2hhc2hCCAoGX2FmdGVyIr0BChlSZWxhdGlvbnNoaXBUdXBsZUV2aWRlbmNlEjgKBXR1cGxlGAEgASgLMikubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlQWRkcmVzcxIQCgh0dXBsZV9pZBgCIAEoCRIaChJhc3NlcnRpb25fZXZlbnRfaWQYAyABKAkSIAoTcmV2b2NhdGlvbl9ldmVudF9pZBgEIAEoCUgAiAEBQhYKFF9yZXZvY2F0aW9uX2V2ZW50X2lkIuEDChhBdXRob3JpemF0aW9uRXhwbGFuYXRpb24SRgoJb3BlcmF0aW9uGAEgASgOMjMubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbi5PcGVyYXRpb24SEAoIcmVsYXRpb24YAiABKAkSDgoGcmVzdWx0GAMgASgIEjwKCGV2aWRlbmNlGAQgAygLMioubm9tb3Mua2VybmVsLnYxLlJlbGF0aW9uc2hpcFR1cGxlRXZpZGVuY2USOwoIY2hpbGRyZW4YBSADKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uIt8BCglPcGVyYXRpb24SGQoVT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASFAoQT1BFUkFUSU9OX0RJUkVDVBABEh4KGk9QRVJBVElPTl9DT01QVVRFRF9VU0VSU0VUEAISHgoaT1BFUkFUSU9OX1RVUExFX1RPX1VTRVJTRVQQAxITCg9PUEVSQVRJT05fVU5JT04QBBIaChZPUEVSQVRJT05fSU5URVJTRUNUSU9OEAUSFwoTT1BFUkFUSU9OX0VYQ0xVU0lPThAGEhcKE09QRVJBVElPTl9DT05ESVRJT04QByJ3ChpBdXRob3JpemF0aW9uRGVjaXNpb25CYXNpcxIgChhhdXRob3JpemF0aW9uX21vZGVsX2hhc2gYASABKAkSIQoZcmVsYXRpb25zaGlwX3N0YXRlX2NvbW1pdBgCIAEoCRIUCgxjb250ZXh0X2hhc2gYAyABKAwivgEKGkF1dGhvcml6YXRpb25DaGVja1Jlc3BvbnNlEg8KB2FsbG93ZWQYASABKAgSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSQwoLZXhwbGFuYXRpb24YAyABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uSACIAQFCDgoMX2V4cGxhbmF0aW9uIoMCChtBdXRob3JpemF0aW9uRXhwYW5kUmVzcG9uc2USNwoIc3ViamVjdHMYASADKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QSOgoFYmFzaXMYAiABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSEQoEbmV4dBgDIAEoCUgAiAEBEkMKC2V4cGxhbmF0aW9uGAQgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbkgBiAEBQgcKBV9uZXh0Qg4KDF9leHBsYW5hdGlvbiKoAQoNT3V0Ym94UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei0KBWNsb2NrGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLkNhcHR1cmVkQ2xvY2sSNgoHcHJlcGFyZRgDIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5QcmVwYXJlT3V0Ym91bmRPZmZlciK2AQoLU3luY1JlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIRCglmcm9tX2Jhc2UYAiABKAkSDwoHdG9faGVhZBgDIAEoCRIaChJwYXJrX3JlZnVzZWRfbG9jYWwYBCABKAgSGAoQcGFya2VkX2F0X21pbGxpcxgFIAEoBBIbChNyZXBsYXlfb2ZmZXJfYnVkZ2V0GAYgASgNItMBChpLZXJuZWxDb25maWd1cmF0aW9uUmVxdWVzdBIdChV0cnVzdF9yb290X3B1YmxpY19rZXkYASABKAwSJQoYdHJ1c3RzX2N1c3RvZGlhbl9oaXN0b3J5GAIgASgISACIAQESIAoTZGVmZXJyZWRfZHVyYWJpbGl0eRgDIAEoCEgBiAEBEhgKEGhvc3RfY2FsbF9sZWRnZXIYBCABKAhCGwoZX3RydXN0c19jdXN0b2RpYW5faGlzdG9yeUIWChRfZGVmZXJyZWRfZHVyYWJpbGl0eSKAAQobS2VybmVsQ29uZmlndXJhdGlvblJlc3BvbnNlEi0KBnJlc3VsdBgBIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWQSHQoQaG9zdF9jYWxsX2xlZGdlchgCIAEoDUgAiAEBQhMKEV9ob3N0X2NhbGxfbGVkZ2VyIvMRCg5DdXN0b2R5UmVxdWVzdBI3CgpwYWNrX2RlbHRhGAogASgLMiEubm9tb3Mua2VybmVsLnYxLlBhY2tEZWx0YVJlcXVlc3RIABI3CgphcHBseV9wYWNrGAsgASgLMiEubm9tb3Mua2VybmVsLnYxLkFwcGx5UGFja1JlcXVlc3RIABI3CgpyZXBvX3N0YXRzGAwgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlcG9TdGF0c1JlcXVlc3RIABI9Cg1pbnRlbnRzX2Fib3ZlGA0gASgLMiQubm9tb3Mua2VybmVsLnYxLkludGVudHNBYm92ZVJlcXVlc3RIABI/Cg5pbnNwZWN0X2NoYW5nZRgOIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q2hhbmdlUmVxdWVzdEgAEk4KFmVuY29kZV9yZWZ1c2FsX3ZlcmRpY3QYDyABKAsyLC5ub21vcy5rZXJuZWwudjEuRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXF1ZXN0SAASUAoXaW5zcGVjdF9yZWZ1c2FsX3ZlcmRpY3QYECABKAsyLS5ub21vcy5rZXJuZWwudjEuSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVxdWVzdEgAEjUKCXJlYWRfYmxvYhgRIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5SZWFkQmxvYlJlcXVlc3RIABI5CgtyZXNvbHZlX3JlZhgSIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmUmVxdWVzdEgAEjUKCWxpc3RfcmVmcxgTIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5MaXN0UmVmc1JlcXVlc3RIABI1Cgl3cml0ZV9yZWYYFCABKAsyIC5ub21vcy5rZXJuZWwudjEuV3JpdGVSZWZSZXF1ZXN0SAASNwoKZGVsZXRlX3JlZhgVIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5EZWxldGVSZWZSZXF1ZXN0SAASRAoRd3JpdGVfbWV0YV9jb21taXQYFiABKAsyJy5ub21vcy5rZXJuZWwudjEuV3JpdGVNZXRhQ29tbWl0UmVxdWVzdEgAEkIKEGxhd19jbG9zdXJlX2luZm8YFyABKAsyJi5ub21vcy5rZXJuZWwudjEuTGF3Q2xvc3VyZUluZm9SZXF1ZXN0SAASRQoRY2hlY2twb2ludF9leHBvcnQYGCABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEV4cG9ydFJlcXVlc3RIABJFChFjaGVja3BvaW50X2ltcG9ydBgZIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50SW1wb3J0UmVxdWVzdEgAEkMKEGNhcGFjaXR5X3Jlc2VydmUYGiABKAsyJy5ub21vcy5rZXJuZWwudjEuQ2FwYWNpdHlSZXNlcnZlUmVxdWVzdEgAEjsKDHJlc3RvcmVfbWFpbhgbIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblJlcXVlc3RIABJOChZyZXNvbHZlX3N0YXRlX3Bvc2l0aW9uGBwgASgLMiwubm9tb3Mua2VybmVsLnYxLlJlc29sdmVTdGF0ZVBvc2l0aW9uUmVxdWVzdEgAEkcKEnJlc2lkZW50X2Zvb3RwcmludBgdIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudEZvb3RwcmludFJlcXVlc3RIABJBCg9oaXN0b3J5X3N1bW1hcnkYHiABKAsyJi5ub21vcy5rZXJuZWwudjEuSGlzdG9yeVN1bW1hcnlSZXF1ZXN0SAASWgoccHJvdmVfY29tcGFjdGlvbl9lcXVpdmFsZW5jZRgfIAEoCzIyLm5vbW9zLmtlcm5lbC52MS5Qcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlcXVlc3RIABI+Cg5vcGVuX2dpdF9zdGF0ZRggIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5PcGVuR2l0U3RhdGVSZXF1ZXN0SAASTgoWcmVhZF9jdXN0b2R5X3BsYWNlbWVudBghIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5SZWFkQ3VzdG9keVBsYWNlbWVudFJlcXVlc3RIABJUChlpbnNwZWN0X2N1c3RvZHlfcGxhY2VtZW50GCMgASgLMi8ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RDdXN0b2R5UGxhY2VtZW50UmVxdWVzdEgAElAKF3JlbGVhc2Vfd29ya3NwYWNlX3N0YXRlGCQgASgLMi0ubm9tb3Mua2VybmVsLnYxLlJlbGVhc2VXb3Jrc3BhY2VTdGF0ZVJlcXVlc3RIABJfCh9yZWNvcmRfd29ya3NwYWNlX2VmZmVjdF9vdXRjb21lGCUgASgLMjQubm9tb3Mua2VybmVsLnYxLlJlY29yZFdvcmtzcGFjZUVmZmVjdE91dGNvbWVSZXF1ZXN0SAASTAoVYXR0YWNoX2xvY2FsX2Zyb250aWVyGCYgASgLMisubm9tb3Mua2VybmVsLnYxLkF0dGFjaExvY2FsRnJvbnRpZXJSZXF1ZXN0SAASQwoQYWdncmVnYXRlX2NlbnN1cxgnIAEoCzInLm5vbW9zLmtlcm5lbC52MS5BZ2dyZWdhdGVDZW5zdXNSZXF1ZXN0SAASPQoNYXVkaXRfY3VzdG9keRgoIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5BdWRpdEN1c3RvZHlSZXF1ZXN0SAASSAoTZXhwb3J0X2xhd19wcm9kdWN0cxgpIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5FeHBvcnRMYXdQcm9kdWN0c1JlcXVlc3RIABJIChNpbXBvcnRfbGF3X3Byb2R1Y3RzGCogASgLMikubm9tb3Mua2VybmVsLnYxLkltcG9ydExhd1Byb2R1Y3RzUmVxdWVzdEgAQgsKCW9wZXJhdGlvbkoECCIQI1IXYWRvcHRfY3VzdG9keV9wbGFjZW1lbnQiXgoWQWdncmVnYXRlQ2Vuc3VzUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhIKCnR5cGVfbGltaXQYAiABKA0iMQoSQWdncmVnYXRlVHlwZUNvdW50EgwKBHR5cGUYASABKAkSDQoFY291bnQYAiABKAQi+wEKF0FnZ3JlZ2F0ZUNlbnN1c1Jlc3BvbnNlEhEKBGhlYWQYASABKAlIAIgBARIcCg9hZ2dyZWdhdGVfY291bnQYAiABKARIAYgBARIXCgpzdGF0ZV9yb290GAMgASgJSAKIAQESNgoJdG9wX3R5cGVzGAQgAygLMiMubm9tb3Mua2VybmVsLnYxLkFnZ3JlZ2F0ZVR5cGVDb3VudBIdChB0eXBlc19zdGF0ZV9yb290GAUgASgJSAOIAQFCBwoFX2hlYWRCEgoQX2FnZ3JlZ2F0ZV9jb3VudEINCgtfc3RhdGVfcm9vdEITChFfdHlwZXNfc3RhdGVfcm9vdCIoChhSZXNpZGVudEZvb3RwcmludFJlcXVlc3QSDAoEZGVlcBgBIAEoCCL0AwoRUmVzaWRlbnRGb290cHJpbnQSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIYChByZWFkX21vZGVsX2J5dGVzGAMgASgEEh0KFXJlYWRfbW9kZWxfcnVzdF9ieXRlcxgEIAEoBBIYChBmb2xkX3N0YXRlX2J5dGVzGAUgASgEEhMKC2ZvbGRfaW1hZ2VzGAYgASgNEh8KF3NoYXJlZF9hdHRyaWJ1dGVkX2J5dGVzGAcgASgEEhIKCmFnZ3JlZ2F0ZXMYCCABKAQSNgoKY29tcG9uZW50cxgJIAMoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudENvbXBvbmVudBISCgpjb21wdXRlX3VzGAogASgEEkUKEXJlYWRfc3RvcmFnZV9raW5kGAsgASgOMioubm9tb3Mua2VybmVsLnYxLlJlYWRQcm9qZWN0aW9uU3RvcmFnZUtpbmQSHwoXc3FsaXRlX2NhY2hlX3VzZWRfYnl0ZXMYDCABKAQSGAoQZmxhdF9zY2FsYXJfcm93cxgNIAEoBBIdChVmbGF0X3NjYWxhcl9yb3dzX3JlYWQYDiABKAQSHQoQZnVsbF9yZXBsYXlfaGVhZBgPIAEoCUgAiAEBQhMKEV9mdWxsX3JlcGxheV9oZWFkImkKEVJlc2lkZW50Q29tcG9uZW50EjQKBGtpbmQYASABKA4yJi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRDb21wb25lbnRLaW5kEg0KBWJ5dGVzGAIgASgEEg8KB2NlaWxpbmcYAyABKAgiygEKGVJlc2lkZW50Rm9vdHByaW50UmVzcG9uc2USNQoJcmVzaWRlbnRzGAEgAygLMiIubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50EhwKFGFsbG9jYXRvcl9saXZlX2J5dGVzGAIgASgEEhgKEGF0dHJpYnV0ZWRfYnl0ZXMYAyABKAQSGQoRdW5hY2NvdW50ZWRfYnl0ZXMYBCABKAQSFQoNYWNjb3VudGluZ191cxgFIAEoBBIMCgRkZWVwGAYgASgIIuIBChBQYWNrRGVsdGFSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEhEKBGJhc2UYAyABKAlIAYgBARIOCgZicmFuY2gYBCABKAkSHQoQc3RhZ2VkX3BhY2tfZmlsZRgFIAEoCUgCiAEBEhIKBWRlcHRoGAYgASgNSAOIAQESEgoKYmVsb3dfaGVhZBgHIAEoCBISCgphbHNvX2hlYWRzGAggAygJQgcKBV9oZWFkQgcKBV9iYXNlQhMKEV9zdGFnZWRfcGFja19maWxlQggKBl9kZXB0aCL6AQoQQXBwbHlQYWNrUmVxdWVzdBIMCgRyZXBvGAEgASgJEg4KBHBhY2sYAiABKAxIABIaChBzdGFnZWRfcGFja19maWxlGAQgASgJSAASGgoQY29udGludWVfcGVuZGluZxgIIAEoCEgAEhgKDmNhbmNlbF9wZW5kaW5nGAogASgISAASEQoEaGVhZBgDIAEoCUgBiAEBEg8KB3NoYWxsb3cYBSADKAkSEQoJdW5zaGFsbG93GAYgAygJEhkKEXdvcmtfYnVkZ2V0X2J5dGVzGAcgASgEEhEKCWltcG9ydF9pZBgJIAEoBEIICgZzb3VyY2VCBwoFX2hlYWQiIAoQUmVwb1N0YXRzUmVxdWVzdBIMCgRyZXBvGAEgASgJIr8BChNJbnRlbnRzQWJvdmVSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEhEKBGJhc2UYAyABKAlIAYgBARIOCgZicmFuY2gYBCABKAkSDQoFbGltaXQYBSABKAQSGAoQY29tcGxldGVfbG9naWNhbBgGIAEoCBIWCg5jb21wYWN0X3N0b3JlZBgHIAEoCBIRCglmcm9tX2Jhc2UYCCABKAhCBwoFX2hlYWRCBwoFX2Jhc2UibQoVSGlzdG9yeVN1bW1hcnlSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoEaGVhZBgCIAEoCUgAiAEBEg4KBmJyYW5jaBgDIAEoCRIRCgRiYXNlGAQgASgJSAGIAQFCBwoFX2hlYWRCBwoFX2Jhc2UiKwoUSW5zcGVjdENoYW5nZVJlcXVlc3QSEwoLY2hhbmdlX3VzZGEYASABKAwi3wEKDlJlZnVzYWxWZXJkaWN0EhUKCG9mZmVyX2lkGAEgASgJSACIAQESEAoDb2lkGAIgASgJSAGIAQESEwoGZG9tYWluGAMgASgJSAKIAQESGQoMZGlyZWN0aXZlX2lkGAQgASgJSAOIAQESFAoHc2Vzc2lvbhgFIAEoCUgEiAEBEhEKCXBhcmtlZF9hdBgGIAEoCRIOCgZyZWFzb24YByABKAlCCwoJX29mZmVyX2lkQgYKBF9vaWRCCQoHX2RvbWFpbkIPCg1fZGlyZWN0aXZlX2lkQgoKCF9zZXNzaW9uIk8KG0VuY29kZVJlZnVzYWxWZXJkaWN0UmVxdWVzdBIwCgd2ZXJkaWN0GAEgASgLMh8ubm9tb3Mua2VybmVsLnYxLlJlZnVzYWxWZXJkaWN0IjQKHEluc3BlY3RSZWZ1c2FsVmVyZGljdFJlcXVlc3QSFAoMdmVyZGljdF91c2RhGAEgASgMItQBChVDb21wYWN0aW9uRXF1aXZhbGVuY2USEwoLc291cmNlX2hlYWQYASABKAkSFgoOc291cmNlX2dlbmVzaXMYAiABKAkSFgoOY2FuZGlkYXRlX2hlYWQYAyABKAkSGQoRY2FuZGlkYXRlX2dlbmVzaXMYBCABKAkSFgoOc291cmNlX2ludGVudHMYBSABKAQSFwoPY2FycmllZF9pbnRlbnRzGAYgASgEEhYKDnBhcmtlZF9pbnRlbnRzGAcgASgEEhIKCmVxdWl2YWxlbnQYCCABKAgifQohUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXF1ZXN0EhMKC3NvdXJjZV9yZXBvGAEgASgJEhMKC3NvdXJjZV9oZWFkGAIgASgJEhYKDmNhbmRpZGF0ZV9yZXBvGAMgASgJEhYKDmNhbmRpZGF0ZV9oZWFkGAQgASgJIjoKD1JlYWRCbG9iUmVxdWVzdBIMCgRyZXBvGAEgASgJEgsKA29pZBgCIAEoCRIMCgRwYXRoGAMgASgJIlAKEVJlc29sdmVSZWZSZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEhEKBHBhdGgYAyABKAlIAIgBAUIHCgVfcGF0aCI2Cg9QaHlzaWNhbFJlZkZpbGUSEQoJcmVmZXJlbmNlGAEgASgJEhAKCGNvbnRlbnRzGAIgASgMIqcCCg9MaXN0UmVmc1JlcXVlc3QSDAoEcmVwbxgBIAEoCRIOCgZwcmVmaXgYAiABKAkSGAoQbG9vc2VfcmVmZXJlbmNlcxgDIAMoCRIgChhsb29zZV9pbnZlbnRvcnlfY29tcGxldGUYBCABKAgSIAoTcGFja2VkX3JlZnNfcHJlc2VudBgFIAEoCEgAiAEBEj0KE3BoeXNpY2FsX2xvb3NlX3JlZnMYBiADKAsyIC5ub21vcy5rZXJuZWwudjEuUGh5c2ljYWxSZWZGaWxlEhwKFHBoeXNpY2FsX3BhY2tlZF9yZWZzGAcgASgMEiMKG3BoeXNpY2FsX2ludmVudG9yeV9jb21wbGV0ZRgIIAEoCEIWChRfcGFja2VkX3JlZnNfcHJlc2VudCJCCg9Xcml0ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSDgoGdGFyZ2V0GAMgASgJIjMKEERlbGV0ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkiKQoITWV0YUZpbGUSDAoEcGF0aBgBIAEoCRIPCgdjb250ZW50GAIgASgMIq4BChZXcml0ZU1ldGFDb21taXRSZXF1ZXN0EgwKBHJlcG8YASABKAkSDwoHcGFyZW50cxgCIAMoCRIoCgVmaWxlcxgDIAMoCzIZLm5vbW9zLmtlcm5lbC52MS5NZXRhRmlsZRIPCgdtZXNzYWdlGAQgASgJEhQKDHRpbWVfc2Vjb25kcxgFIAEoEhIWCglyZWZlcmVuY2UYBiABKAlIAIgBAUIMCgpfcmVmZXJlbmNlImcKFUxhd0Nsb3N1cmVJbmZvUmVxdWVzdBIUCgxjbG9zdXJlX2ZpbGUYASABKAkSOAoKY2FwYWJpbGl0eRgCIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxMYXdDYXBhYmlsaXR5IocBChdDaGVja3BvaW50RXhwb3J0UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EiEKFHN0YWdlZF9mcm9udGllcl9maWxlGAIgASgJSACIAQFCFwoVX3N0YWdlZF9mcm9udGllcl9maWxlIkEKC0Zyb250aWVySGxjEhAKCHBoeXNpY2FsGAEgASgEEg8KB2xvZ2ljYWwYAiABKA0SDwoHcmVwbGljYRgDIAEoBCLtBAoXVmVyaWZpZWRGcm9udGllclJlY2VpcHQSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SCwoDb2lkGAIgASgJEg8KB2ludGVudHMYAyABKAQSEwoLcGxhbnNfcmVydW4YBCABKAQSHAoPY29udHJvbGxlcl9oYXNoGAUgASgJSACIAQESGQoRaW5zdGFsbGVkX2RvbWFpbnMYBiADKAkSDgoGbGluZWFyGAcgASgIEjMKCGxhc3RfaGxjGAggASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSAGIAQESFAoHbGFzdF9pZBgJIAEoCUgCiAEBEhEKCXN0YXRlX29pZBgKIAEoCRIUCgxzdGF0ZV9zaGEyNTYYCyABKAkSOQoOc3RhdGVfbGFzdF9obGMYDCABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIA4gBARIaCg1zdGF0ZV9sYXN0X2lkGA0gASgJSASIAQESFwoPbWFuaWZlc3Rfc2hhMjU2GA4gASgJEh4KFmxhd19jbG9zdXJlX2lkZW50aXRpZXMYDyADKAkSGgoScmVzb2x2YWJsZV9kb21haW5zGBAgAygJEiIKFXByb2plY3Rpb25fc3RhdGVfcm9vdBgRIAEoCUgFiAEBEg4KBndhbGtlZBgSIAEoCEISChBfY29udHJvbGxlcl9oYXNoQgsKCV9sYXN0X2hsY0IKCghfbGFzdF9pZEIRCg9fc3RhdGVfbGFzdF9obGNCEAoOX3N0YXRlX2xhc3RfaWRCGAoWX3Byb2plY3Rpb25fc3RhdGVfcm9vdCJFChVGb2xkRnJvbnRpZXJBZ2dyZWdhdGUSFAoMYWdncmVnYXRlX2lkGAEgASgJEhYKDmFnZ3JlZ2F0ZV91c2RhGAIgASgMIkEKF0ZvbGRGcm9udGllckZpbmdlcnByaW50EhEKCWludGVudF9pZBgBIAEoCRITCgtmaW5nZXJwcmludBgCIAEoCSLWAwoURm9sZEZyb250aWVyU25hcHNob3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SCwoDdGlwGAIgASgJEg8KB2dlbmVzaXMYAyABKAkSFQoNaGlzdG9yeV9kZXB0aBgEIAEoBBI6CgphZ2dyZWdhdGVzGAUgAygLMiYubm9tb3Mua2VybmVsLnYxLkZvbGRGcm9udGllckFnZ3JlZ2F0ZRI4Cg1obGNfd2F0ZXJtYXJrGAYgASgLMhwubm9tb3Mua2VybmVsLnYxLkZyb250aWVySGxjSACIAQESMwoIbGFzdF9obGMYByABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAYgBARIUCgdsYXN0X2lkGAggASgJSAKIAQESFgoOc3RyaWtlX3RhcmdldHMYCSADKAkSRQoTaW50ZW50X2ZpbmdlcnByaW50cxgKIAMoCzIoLm5vbW9zLmtlcm5lbC52MS5Gb2xkRnJvbnRpZXJGaW5nZXJwcmludBIXCgpzdGF0ZV9yb290GAsgASgJSAOIAQFCEAoOX2hsY193YXRlcm1hcmtCCwoJX2xhc3RfaGxjQgoKCF9sYXN0X2lkQg0KC19zdGF0ZV9yb290IpsDChhTdG9yZWRDaGVja3BvaW50TWFuaWZlc3QSFgoOZm9ybWF0X3ZlcnNpb24YASABKA0SEwoGY3Vyc29yGAIgASgJSACIAQESGAoQY2hlY2twb2ludF9ieXRlcxgDIAEoBBIQCghsYXdfaGFzaBgEIAEoCRI7Cgtjb21wcmVzc2lvbhgFIAEoDjImLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50Q29tcHJlc3Npb24SEQoJcmF3X2J5dGVzGAYgASgEEhQKDHN0b3JlZF9ieXRlcxgHIAEoBBIdChVmcm9udGllcl9zdG9yZWRfYnl0ZXMYCCABKAQSFwoKc3RhdGVfcm9vdBgJIAEoCUgBiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCiABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIAogBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IsEDChdDaGVja3BvaW50SW1wb3J0UmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhIKCGZyb250aWVyGAIgASgMSAASHgoUc3RhZ2VkX2Zyb250aWVyX2ZpbGUYBiABKAlIABITCgZjdXJzb3IYAyABKAlIAYgBARIXCgpzdGF0ZV9yb290GAQgASgJSAKIAQESDQoFc3BhbnMYBSABKAgSEQoEaGVhZBgHIAEoCUgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCCABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBARJKChN2ZXJpZmljYXRpb25fcG9saWN5GAkgASgOMi0ubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRWZXJpZmljYXRpb25Qb2xpY3lCEQoPZnJvbnRpZXJfc291cmNlQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCBwoFX2hlYWRCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQiMQoWQ2FwYWNpdHlSZXNlcnZlUmVxdWVzdBIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQimQIKElJlc3RvcmVNYWluUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EgwKBGhlYWQYAiABKAkSEwoLZGlhZ25vc3RpY3MYAyABKAgSGAoQb3BlcmF0b3JfY3VzdG9keRgEIAEoCBIgChNleHBlY3RlZF9sb2NhbF9oZWFkGAUgASgJSACIAQESQAoTY3VzdG9keV9jZXJ0aWZpY2F0ZRgGIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5Q2VydGlmaWNhdGUSGAoQcHJvdmlkZXJfY3VzdG9keRgHIAEoCEIWChRfZXhwZWN0ZWRfbG9jYWxfaGVhZCJtChNBdWRpdEN1c3RvZHlSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSFQoNYnVkZ2V0X21pY3JvcxgCIAEoDRINCgVzdGFydBgDIAEoCCKUAQoUQXVkaXRDdXN0b2R5UmVzcG9uc2USDwoHcGVuZGluZxgBIAEoCBIMCgRoZWFkGAIgASgJEg4KBndhbGtlZBgDIAEoBBINCgV0b3RhbBgEIAEoBBIPCgdvdXRjb21lGAUgASgJEi0KB3ZlcmRpY3QYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QifgoLTGF3UHJvZHVjdHMSFAoMbGF3X2lkZW50aXR5GAEgASgJEhYKDmZvcm1hdF92ZXJzaW9uGAIgASgNEhIKCnJlYWRfbGF5ZXIYAyABKAwSFQoNY29tbWFuZF9sYXllchgEIAEoDBIWCg5zZW1hbnRpY19sYXllchgFIAEoDCJMChhFeHBvcnRMYXdQcm9kdWN0c1JlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldCJZChlFeHBvcnRMYXdQcm9kdWN0c1Jlc3BvbnNlEgwKBGhlYWQYASABKAkSLgoIcHJvZHVjdHMYAiADKAsyHC5ub21vcy5rZXJuZWwudjEuTGF3UHJvZHVjdHMifAoYSW1wb3J0TGF3UHJvZHVjdHNSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSLgoIcHJvZHVjdHMYAiADKAsyHC5ub21vcy5rZXJuZWwudjEuTGF3UHJvZHVjdHMiLQoZSW1wb3J0TGF3UHJvZHVjdHNSZXNwb25zZRIQCghpbXBvcnRlZBgBIAMoCSJvChJDdXN0b2R5Q2VydGlmaWNhdGUSEQoJd29ya3NwYWNlGAEgASgJEgwKBGhlYWQYAiABKAkSEQoJa2V5X2Vwb2NoGAMgASgDEhIKCnB1YmxpY19rZXkYBCABKAwSEQoJc2lnbmF0dXJlGAUgASgMImQKE09wZW5HaXRTdGF0ZVJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIMCgRoZWFkGAIgASgJEg0KBXNwYW5zGAMgASgIImsKGkF0dGFjaExvY2FsRnJvbnRpZXJSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDAoEaGVhZBgCIAEoCRINCgVzcGFucxgDIAEoCCJTCg1DdXN0b2R5UmVtb3RlEgwKBG5hbWUYASABKAkSCwoDdXJsGAIgASgJEhUKDXBlZXJfaWRlbnRpdHkYAyABKAkSEAoIcHJpb3JpdHkYBCABKA0ixgEKFEN1c3RvZHlQbGFjZW1lbnRSdWxlEhIKCnBlZXJfY2xhc3MYASABKAkSQAoQa2VybmVsX3Jlc2lkZW5jeRgCIAEoDjImLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZXNpZGVuY3lJbnRlbnQSQgoRY3VzdG9keV9yZXRlbnRpb24YAyABKA4yJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVJldGVudGlvbkludGVudBIUCgxyZW1vdGVfbmFtZXMYBCADKAkirgIKFkN1c3RvZHlQbGFjZW1lbnRQb2xpY3kSEwoLZGVjbGFyYXRpb24YASABKAkSFgoOcGFja2FnZV9zaGEyNTYYAiABKAkSNAoFcnVsZXMYAyADKAsyJS5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFJ1bGUSEgoKYWRvcHRlZF9ieRgEIAEoCRIOCgZyZWFzb24YBSABKAkSHgoWZWZmZWN0aXZlX3RpbWVfc2Vjb25kcxgGIAEoEhIvCgdyZW1vdGVzGAcgAygLMh4ubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlSZW1vdGUSIgoVcmVjaXBpZW50X21haWxib3hfdXJsGAggASgJSACIAQFCGAoWX3JlY2lwaWVudF9tYWlsYm94X3VybCJZChtDdXN0b2R5UGxhY2VtZW50RXhwZWN0YXRpb24SEAoGYWJzZW50GAEgASgISAASDQoDb2lkGAIgASgJSAASDQoDYW55GAMgASgISABCCgoIZnJvbnRpZXIiKwobUmVhZEN1c3RvZHlQbGFjZW1lbnRSZXF1ZXN0EgwKBHJlcG8YASABKAkiNQoeSW5zcGVjdEN1c3RvZHlQbGFjZW1lbnRSZXF1ZXN0EhMKC3BvbGljeV91c2RhGAEgASgMIokBCg5QbGFjZW1lbnRPZmZlchI+CghleHBlY3RlZBgBIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UGxhY2VtZW50RXhwZWN0YXRpb24SNwoGcG9saWN5GAIgASgLMicubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlQbGFjZW1lbnRQb2xpY3kiaQobUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXF1ZXN0EgwKBHJlcG8YASABKAkSEQoJbWFpbl9oZWFkGAIgASgJEhUKDWhpbnRlZF9jb21taXQYAyABKAkSEgoKc3RhdGVfcm9vdBgEIAEoCSKFEgoPQ3VzdG9keVJlc3BvbnNlEjgKCnBhY2tfZGVsdGEYCiABKAsyIi5ub21vcy5rZXJuZWwudjEuUGFja0RlbHRhUmVzcG9uc2VIABI4CgphcHBseV9wYWNrGAsgASgLMiIubm9tb3Mua2VybmVsLnYxLkFwcGx5UGFja1Jlc3BvbnNlSAASOAoKcmVwb19zdGF0cxgMIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5SZXBvU3RhdHNSZXNwb25zZUgAEj4KDWludGVudHNfYWJvdmUYDSABKAsyJS5ub21vcy5rZXJuZWwudjEuSW50ZW50c0Fib3ZlUmVzcG9uc2VIABJACg5pbnNwZWN0X2NoYW5nZRgOIAEoCzImLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q2hhbmdlUmVzcG9uc2VIABJPChZlbmNvZGVfcmVmdXNhbF92ZXJkaWN0GA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLkVuY29kZVJlZnVzYWxWZXJkaWN0UmVzcG9uc2VIABJRChdpbnNwZWN0X3JlZnVzYWxfdmVyZGljdBgQIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0UmVmdXNhbFZlcmRpY3RSZXNwb25zZUgAEjYKCXJlYWRfYmxvYhgRIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZWFkQmxvYlJlc3BvbnNlSAASOgoLcmVzb2x2ZV9yZWYYEiABKAsyIy5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZlJlc3BvbnNlSAASNgoJbGlzdF9yZWZzGBMgASgLMiEubm9tb3Mua2VybmVsLnYxLkxpc3RSZWZzUmVzcG9uc2VIABIyCgl3cml0ZV9yZWYYFCABKAsyHS5ub21vcy5rZXJuZWwudjEuQWNrbm93bGVkZ2VkSAASMwoKZGVsZXRlX3JlZhgVIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWRIABJFChF3cml0ZV9tZXRhX2NvbW1pdBgWIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5Xcml0ZU1ldGFDb21taXRSZXNwb25zZUgAEkMKEGxhd19jbG9zdXJlX2luZm8YFyABKAsyJy5ub21vcy5rZXJuZWwudjEuTGF3Q2xvc3VyZUluZm9SZXNwb25zZUgAEkYKEWNoZWNrcG9pbnRfZXhwb3J0GBggASgLMikubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRFeHBvcnRSZXNwb25zZUgAEkYKEWNoZWNrcG9pbnRfaW1wb3J0GBkgASgLMikubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRJbXBvcnRSZXNwb25zZUgAEkQKEGNhcGFjaXR5X3Jlc2VydmUYGiABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2FwYWNpdHlSZXNlcnZlUmVzcG9uc2VIABI8CgxyZXN0b3JlX21haW4YGyABKAsyJC5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5SZXNwb25zZUgAEk8KFnJlc29sdmVfc3RhdGVfcG9zaXRpb24YHCABKAsyLS5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXNwb25zZUgAEkgKEnJlc2lkZW50X2Zvb3RwcmludBgdIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudEZvb3RwcmludFJlc3BvbnNlSAASQgoPaGlzdG9yeV9zdW1tYXJ5GB4gASgLMicubm9tb3Mua2VybmVsLnYxLkhpc3RvcnlTdW1tYXJ5UmVzcG9uc2VIABJbChxwcm92ZV9jb21wYWN0aW9uX2VxdWl2YWxlbmNlGB8gASgLMjMubm9tb3Mua2VybmVsLnYxLlByb3ZlQ29tcGFjdGlvbkVxdWl2YWxlbmNlUmVzcG9uc2VIABI/Cg5vcGVuX2dpdF9zdGF0ZRggIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5PcGVuR2l0U3RhdGVSZXNwb25zZUgAEk8KFnJlYWRfY3VzdG9keV9wbGFjZW1lbnQYISABKAsyLS5ub21vcy5rZXJuZWwudjEuUmVhZEN1c3RvZHlQbGFjZW1lbnRSZXNwb25zZUgAElUKGWluc3BlY3RfY3VzdG9keV9wbGFjZW1lbnQYIyABKAsyMC5ub21vcy5rZXJuZWwudjEuSW5zcGVjdEN1c3RvZHlQbGFjZW1lbnRSZXNwb25zZUgAElEKF3JlbGVhc2Vfd29ya3NwYWNlX3N0YXRlGCQgASgLMi4ubm9tb3Mua2VybmVsLnYxLlJlbGVhc2VXb3Jrc3BhY2VTdGF0ZVJlc3BvbnNlSAASWgofcmVjb3JkX3dvcmtzcGFjZV9lZmZlY3Rfb3V0Y29tZRglIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5SZWNvcmRlZFdvcmtzcGFjZUVmZmVjdE91dGNvbWVIABJNChVhdHRhY2hfbG9jYWxfZnJvbnRpZXIYJiABKAsyLC5ub21vcy5rZXJuZWwudjEuQXR0YWNoTG9jYWxGcm9udGllclJlc3BvbnNlSAASRAoQYWdncmVnYXRlX2NlbnN1cxgnIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5BZ2dyZWdhdGVDZW5zdXNSZXNwb25zZUgAEj4KDWF1ZGl0X2N1c3RvZHkYKCABKAsyJS5ub21vcy5rZXJuZWwudjEuQXVkaXRDdXN0b2R5UmVzcG9uc2VIABJJChNleHBvcnRfbGF3X3Byb2R1Y3RzGCkgASgLMioubm9tb3Mua2VybmVsLnYxLkV4cG9ydExhd1Byb2R1Y3RzUmVzcG9uc2VIABJJChNpbXBvcnRfbGF3X3Byb2R1Y3RzGCogASgLMioubm9tb3Mua2VybmVsLnYxLkltcG9ydExhd1Byb2R1Y3RzUmVzcG9uc2VIAEILCglvcGVyYXRpb25KBAgiECNSF2Fkb3B0X2N1c3RvZHlfcGxhY2VtZW50InAKEVBhY2tEZWx0YVJlc3BvbnNlEgwKBHBhY2sYASABKAwSDQoFYnl0ZXMYAiABKAQSDwoHc2hhbGxvdxgDIAMoCRIPCgdjb21taXRzGAQgASgNEg0KBXRyZWVzGAUgASgNEg0KBWJsb2JzGAYgASgNIuIBChFBcHBseVBhY2tSZXNwb25zZRIUCgxvYmplY3RfY291bnQYASABKAQSEQoJcGFja19oYXNoGAIgASgJEjsKB2Nsb3N1cmUYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuUGh5c2ljYWxDbG9zdXJlQ2hlY2tIAIgBARIWCg5pbXBvcnRfcGVuZGluZxgEIAEoCBIXCg93b3JrX2RvbmVfYnl0ZXMYBSABKAQSEQoJaW1wb3J0X2lkGAYgASgEEhcKD2ltcG9ydF9kZWZlcnJlZBgHIAEoCEIKCghfY2xvc3VyZSJtChRQaHlzaWNhbENsb3N1cmVDaGVjaxIWCg5yZXVzZWRfcmVjZWlwdBgBIAEoCBIUCgxjb21taXRzX3JlYWQYAiABKAQSEgoKdHJlZXNfcmVhZBgDIAEoBBITCgtsZWF2ZXNfcmVhZBgEIAEoBCK4AQoRUmVwb1N0YXRzUmVzcG9uc2USEwoLdG90YWxfYnl0ZXMYASABKAQSFAoMb2JqZWN0X2J5dGVzGAIgASgEEhUKDWxvb3NlX29iamVjdHMYAyABKAQSEwoLbG9vc2VfYnl0ZXMYBCABKAQSEgoKcGFja19maWxlcxgFIAEoBBISCgpwYWNrX2J5dGVzGAYgASgEEhMKC2luZGV4X2J5dGVzGAcgASgEEg8KB3NoYWxsb3cYCCADKAki4gEKDEludGVudFJlY29yZBILCgNvaWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEg4KBmRvbWFpbhgDIAEoCRIRCglkaXJlY3RpdmUYBCABKAkSEwoLY2hhbmdlX3VzZGEYBSABKAwSLgoIc2VtYW50aWMYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSSgoVdHJhbnNwb3J0X3JlcXVpcmVtZW50GAcgASgOMisubm9tb3Mua2VybmVsLnYxLkludGVudFRyYW5zcG9ydFJlcXVpcmVtZW50IkYKFEludGVudHNBYm92ZVJlc3BvbnNlEi4KB2ludGVudHMYASADKAsyHS5ub21vcy5rZXJuZWwudjEuSW50ZW50UmVjb3JkInQKFkhpc3RvcnlTdW1tYXJ5UmVzcG9uc2USDAoEaGVhZBgBIAEoCRIOCgZvbGRlc3QYAiABKAkSFAoMY29tbWl0X2NvdW50GAMgASgEEhAKCGNvbXBsZXRlGAQgASgIEhQKDHJlYWNoZWRfYmFzZRgFIAEoCCJCChNOb21pbmFsQ2FsbElkZW50aXR5EhMKC2RvbWFpbl9wYXRoGAEgASgJEhYKDmRpcmVjdGl2ZV9wYXRoGAIgASgJIogBChhMaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSHwoXdGFyZ2V0X2Nsb3N1cmVfaWRlbnRpdHkYASABKAkSFAoMaW5zdGFsbGVkX2J5GAIgASgJEjUKBXBoYXNlGAMgASgOMiYubm9tb3Mua2VybmVsLnYxLkxpZmVjeWNsZUluc3RhbGxQaGFzZSJaCh1Xb3Jrc3BhY2VSZXNpZGVuY3lSZXF1aXJlbWVudBIRCgl3b3Jrc3BhY2UYASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSEQoJZm9sZF9yb290GAMgASgJIrQCChVJbnNwZWN0Q2hhbmdlUmVzcG9uc2USLgoIc2VtYW50aWMYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJaW50ZW50X2lkGAIgASgJEjIKBGNhbGwYAyABKAsyJC5ub21vcy5rZXJuZWwudjEuTm9taW5hbENhbGxJZGVudGl0eRIQCghhdXRob3JlZBgEIAEoCBJEChFsaWZlY3ljbGVfaW5zdGFsbBgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5MaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSTAoUcmVxdWlyZWRfcmVzaWRlbmNpZXMYBiADKAsyLi5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZW1lbnQiTAocUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXNwb25zZRIaCg1yZXNvbHZlZF9oZWFkGAEgASgJSACIAQFCEAoOX3Jlc29sdmVkX2hlYWQiNAocRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZRIUCgx2ZXJkaWN0X3VzZGEYASABKAwiUQodSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVzcG9uc2USMAoHdmVyZGljdBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5SZWZ1c2FsVmVyZGljdCJ1CiJQcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlc3BvbnNlEjgKCGV2aWRlbmNlGAEgASgLMiYubm9tb3Mua2VybmVsLnYxLkNvbXBhY3Rpb25FcXVpdmFsZW5jZRIVCg1ldmlkZW5jZV91c2RhGAIgASgMIi8KEFJlYWRCbG9iUmVzcG9uc2USDQoFZm91bmQYASABKAgSDAoEYmxvYhgCIAEoDCIuChJSZXNvbHZlUmVmUmVzcG9uc2USEAoDb2lkGAEgASgJSACIAQFCBgoEX29pZCIrCglSZWZSZWNvcmQSEQoJcmVmZXJlbmNlGAEgASgJEgsKA29pZBgCIAEoCSI8ChBMaXN0UmVmc1Jlc3BvbnNlEigKBHJlZnMYASADKAsyGi5ub21vcy5rZXJuZWwudjEuUmVmUmVjb3JkIg4KDEFja25vd2xlZGdlZCImChdXcml0ZU1ldGFDb21taXRSZXNwb25zZRILCgNvaWQYASABKAkigwEKFkxhd0Nsb3N1cmVJbmZvUmVzcG9uc2USEAoIaWRlbnRpdHkYASABKAkSGQoRcm9vdF9sb2dpY2FsX3BhdGgYAiABKAkSEwoLYXNzZXRfY291bnQYAyABKAQSEgoKcHJpbV9jb3VudBgEIAEoBBITCgtkb21haW5fa2V5cxgFIAMoCSLfAwoYQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlEg0KBWVtcHR5GAEgASgIEhMKBmN1cnNvchgCIAEoCUgAiAEBEhAKCGZyb250aWVyGAMgASgMEhcKCnN0YXRlX3Jvb3QYBCABKAlIAYgBARISCgpzdGF0ZV90cmVlGAUgASgIEg4KBnBpbm5lZBgGIAEoCBIbChNyZWFkX2luZGV4X3NuYXBzaG90GAcgASgIEiMKG3JlYWRfaW5kZXhfc25hcHNob3RfcGVuZGluZxgIIAEoCBIkChdyZWFkX2luZGV4X3NxbGl0ZV9ieXRlcxgJIAEoBEgCiAEBEiUKGHJlYWRfaW5kZXhfY3VzdG9keV9ieXRlcxgKIAEoBEgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCyABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhoKGF9yZWFkX2luZGV4X3NxbGl0ZV9ieXRlc0IbChlfcmVhZF9pbmRleF9jdXN0b2R5X2J5dGVzQhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IusCChhDaGVja3BvaW50SW1wb3J0UmVzcG9uc2USEAoIcmVzdG9yZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESFwoPZnJvbnRpZXJfc2VlZGVkGAMgASgIEiUKHWZyb250aWVyX3ZlcmlmaWNhdGlvbl9wZW5kaW5nGAQgASgIEhcKD2FnZ3JlZ2F0ZV9jb3VudBgFIAEoBBIrCgVzcGFucxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBITCgZjdXJzb3IYByABKAlIAYgBARIRCglyZWFkX29ubHkYCCABKAgSFwoPbGF6eV9yZWFkX2luZGV4GAkgASgIEjcKCWFzc3VyYW5jZRgKIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlEhIKCnJlYWRfcmVhZHkYCyABKAhCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIsABChRPcGVuR2l0U3RhdGVSZXNwb25zZRIOCgZvcGVuZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESFwoPYWdncmVnYXRlX2NvdW50GAMgASgEEisKBXNwYW5zGAQgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhMKBmN1cnNvchgFIAEoCUgBiAEBEhIKCnJlYWRfcmVhZHkYBiABKAhCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIukBChtBdHRhY2hMb2NhbEZyb250aWVyUmVzcG9uc2USEAoIYXR0YWNoZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESDAoEaGVhZBgDIAEoCRISCgpzdGF0ZV9yb290GAQgASgJEhcKD2FnZ3JlZ2F0ZV9jb3VudBgFIAEoBBIrCgVzcGFucxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBISCgpyZWFkX3JlYWR5GAcgASgIEhwKFGZvcmVpZ25fc291cmNlX3JlYWR5GAggASgIQgkKB19yZWFzb24iMQocUmVsZWFzZVdvcmtzcGFjZVN0YXRlUmVxdWVzdBIRCgl3b3Jrc3BhY2UYASABKAkiMQodUmVsZWFzZVdvcmtzcGFjZVN0YXRlUmVzcG9uc2USEAoIcmVsZWFzZWQYASABKAgiiwEKHFJlYWRDdXN0b2R5UGxhY2VtZW50UmVzcG9uc2USFQoIZnJvbnRpZXIYASABKAlIAIgBARI8CgZwb2xpY3kYAiABKAsyJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFBvbGljeUgBiAEBQgsKCV9mcm9udGllckIJCgdfcG9saWN5Il0KEFBsYWNlbWVudEFkb3B0ZWQSEAoIZnJvbnRpZXIYASABKAkSNwoGcG9saWN5GAIgASgLMicubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlQbGFjZW1lbnRQb2xpY3kiWgofSW5zcGVjdEN1c3RvZHlQbGFjZW1lbnRSZXNwb25zZRI3CgZwb2xpY3kYASABKAsyJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFBvbGljeSJKChdDYXBhY2l0eVJlc2VydmVSZXNwb25zZRIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQSFgoOcmVzZXJ2ZWRfYnl0ZXMYAiABKAQi+QIKEFJlc3RvcmVNYWluU3BhbnMSEAoIdG90YWxfdXMYASABKAQSGgoSbGl2ZV9yZWZfbG9va3VwX3VzGAIgASgEEhgKEHRhcmdldF9kZWNvZGVfdXMYAyABKAQSJAocY3VzdG9keV9jb21wbGV0ZW5lc3NfcmVhZF91cxgEIAEoBBIZChFxdWFyYW50aW5lX3JlZl91cxgFIAEoBBIlCh1jaGFpbl9zaWduYXR1cmVfbGF3X3JlcGxheV91cxgGIAEoBBIZChF2ZXJkaWN0X2RlY29kZV91cxgHIAEoBBIjChtwcm9tb3RlX2FuZF9jbGVhbnVwX3JlZnNfdXMYCCABKAQSGwoTZnJvbnRpZXJfcmVidWlsZF91cxgJIAEoBBIZChFmcm9udGllcl9zdG9yZV91cxgKIAEoBBI9Cgx2ZXJpZmljYXRpb24YCyABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcyLvAQoTUmVzdG9yZU1haW5SZXNwb25zZRIMCgRoZWFkGAEgASgJEhAKCHZlcmlmaWVkGAIgASgIEgwKBHdhbGsYAyABKAkSMAoFc3BhbnMYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5TcGFucxItCgd2ZXJkaWN0GAUgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EjcKCWFzc3VyYW5jZRgGIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlEhAKCGFjY2VwdGVkGAcgASgIIpsCCgpOb21vc1ZhbHVlEiUKBG51bGwYASABKAsyFS5ub21vcy5rZXJuZWwudjEuTnVsbEgAEhEKB2Jvb2xlYW4YAiABKAhIABIYCg5zaWduZWRfaW50ZWdlchgDIAEoEkgAEhoKEHVuc2lnbmVkX2ludGVnZXIYBCABKARIABIYCg5mbG9hdGluZ19wb2ludBgFIAEoAUgAEg4KBHRleHQYBiABKAlIABIPCgVieXRlcxgHIAEoDEgAEioKBGxpc3QYCCABKAsyGi5ub21vcy5rZXJuZWwudjEuTm9tb3NMaXN0SAASLgoGb2JqZWN0GAkgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0SABCBgoEa2luZCIGCgROdWxsIjgKCU5vbW9zTGlzdBIrCgZ2YWx1ZXMYASADKAsyGy5ub21vcy5rZXJuZWwudjEuTm9tb3NWYWx1ZSKTAQoLTm9tb3NTdHJ1Y3QSOAoGZmllbGRzGAEgAygLMigubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0LkZpZWxkc0VudHJ5GkoKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlOgI4ASI6Cg9IaXN0b3J5UmVxdWlyZWQSEQoJd29ya3NwYWNlGAEgASgJEhQKDHVudGlsX2NvbW1pdBgCIAEoCSpuCg9MYXdWZXJzaW9uT3JkZXISIQodTEFXX1ZFUlNJT05fT1JERVJfVU5TUEVDSUZJRUQQABIbChdMQVdfVkVSU0lPTl9PUkRFUl9FUVVBTBABEhsKF0xBV19WRVJTSU9OX09SREVSX0xPV0VSEAIq6gEKEkJpcnRoT3V0Y29tZVN0YXR1cxIkCiBCSVJUSF9PVVRDT01FX1NUQVRVU19VTlNQRUNJRklFRBAAEh0KGUJJUlRIX09VVENPTUVfU1RBVFVTX0JPUk4QARIhCh1CSVJUSF9PVVRDT01FX1NUQVRVU19ERUZFUlJFRBACEh8KG0JJUlRIX09VVENPTUVfU1RBVFVTX0ZBSUxFRBADEiAKHEJJUlRIX09VVENPTUVfU1RBVFVTX1JFRlVTRUQQBBIpCiVCSVJUSF9PVVRDT01FX1NUQVRVU19VTldBUlJBTlRFRF9DRVJUEAUqzBQKEUtlcm5lbFJlZnVzYWxDb2RlEiMKH0tFUk5FTF9SRUZVU0FMX0NPREVfVU5TUEVDSUZJRUQQABIlCiFLRVJORUxfUkVGVVNBTF9DT0RFX0JBRF9TSUdOQVRVUkUQARIkCiBLRVJORUxfUkVGVVNBTF9DT0RFX1VOQVVUSE9SSVpFRBACEicKI0tFUk5FTF9SRUZVU0FMX0NPREVfUE9MSUNZX0RJU0FCTEVEEAMSKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9VTkNFUlRJRklFRF9QT0xJQ1kQBBIjCh9LRVJORUxfUkVGVVNBTF9DT0RFX1JFRkVSRU5USUFMEAUSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9QT0lOVF9TVEFURV9VTkFWQUlMQUJMRRAGEiQKIEtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQX0VYQ0VFREVEEAcSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBfQ09VTlRfVU5BVkFJTEFCTEUQCBIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX0VWSURFTkNFX1VOQkFDS0VEEAkSJgoiS0VSTkVMX1JFRlVTQUxfQ09ERV9PUlBIQU5fUkVDRUlQVBAKEjYKMktFUk5FTF9SRUZVU0FMX0NPREVfUkVDRUlQVF9PTl9URVJNSU5BTF9PQkxJR0FUSU9OEAsSIgoeS0VSTkVMX1JFRlVTQUxfQ09ERV9OT1RfTUlOVEVEEAwSKAokS0VSTkVMX1JFRlVTQUxfQ09ERV9ET01BSU5fTElGRUNZQ0xFEA0SKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9UWVBFX1RBR19NSVNNQVRDSBAOEiwKKEtFUk5FTF9SRUZVU0FMX0NPREVfUkVUSVJFRF9SRUFEX1NVUkZBQ0UQDxIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0NST1NTX1dPUktTUEFDRV9ERUNMSU5FRBAQEisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfQUdHUkVHQVRFX0lOVkFSSUFOVBAREisKJ0tFUk5FTF9SRUZVU0FMX0NPREVfV09SS1NQQUNFX0lOVkFSSUFOVBASEi4KKktFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9DT05GTElDVBATEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfQ09ORkxJQ1RfU05BUFNIT1RfUkVRVUlSRUQQFBI0CjBLRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1VOREVDTEFSRUQQFRIxCi1LRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX0lOVkFMSUQQFhIvCitLRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1NUQUxFEBcSMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX1VOREVDTEFSRUQQGBItCilLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfUFJJVkFURRAZEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTkRFQ0xBUkVEEBoSMwovS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOVFJVU1RFRF9LRVkQGxI2CjJLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5UUlVTVEVEX1NPVVJDRRAcEiwKKEtFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9GT1JHRUQQHRIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfU1RBTEUQHhIuCipLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfT1ZFUlNJWkUQHxI3CjNLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfRElTSE9OT1JFRF9TT1VSQ0UQIBI1CjFLRVJORUxfUkVGVVNBTF9DT0RFX0VRVUlWT0NBVElPTl9FVklERU5DRV9JTlZBTElEECESMwovS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RBVElPTl9SRUNFSVBUX0lOVkFMSUQQIhIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0tFWV9ST1NURVJfTUlTTUFUQ0gQIxIvCitLRVJORUxfUkVGVVNBTF9DT0RFX0tFWV9FUE9DSF9OT1RfTU9OT1RPTklDECQSKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9XUklURV9FUE9DSF9TVEFMRRAlEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfRU5WRUxPUEVfU0lEX01JU01BVENIECYSMgouS0VSTkVMX1JFRlVTQUxfQ09ERV9SRVZPS0VEX01FTUJFUl9SRVNVUlJFQ1RFRBAnEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfRk9SR0VEX1BSSU5DSVBBTBAoEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfT1dORURfS0VZX0FOQ0hPUhApEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfT1dORURfUkVDT1ZFUlkQKhIsCihLRVJORUxfUkVGVVNBTF9DT0RFX1NVUkZBQ0VEX0JBU0lTX0FIRUFEECsSMgouS0VSTkVMX1JFRlVTQUxfQ09ERV9TSUdORVJfRVBPQ0hfT1VUX09GX1dJTkRPVxAsEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfRVZPTFZFX1JFRlVTRUQQLRIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEFUSU9OX0lOVkFMSUQQLhItCilLRVJORUxfUkVGVVNBTF9DT0RFX1BBUkVOVF9ESURfTk9UX0FUVEVTVBAvEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfQ0VSVF9DSEFJTl9CUk9LRU4QMBIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX05PVF9ST09URURfQVRfUk9PVBAxEioKJktFUk5FTF9SRUZVU0FMX0NPREVfREVMRUdBVElPTl9JTlZBTElEEDISJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9QTEFOX1JFSkVDVEVEEDMSJgoiS0VSTkVMX1JFRlVTQUxfQ09ERV9ET01BSU5fUkVGVVNFRBA0EjEKLUtFUk5FTF9SRUZVU0FMX0NPREVfSU5WQVJJQU5UX0VYRUNVVElPTl9GQVVMVBA1EjUKMUtFUk5FTF9SRUZVU0FMX0NPREVfQ0hFQ0tQT0lOVF9TSUdORVJfVU5BVkFJTEFCTEUQNhIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX09GRkVSX0JBU0VfU1RBTEUQNxIlCiFLRVJORUxfUkVGVVNBTF9DT0RFX0JJUlRIX1JFRlVTRUQQOCrvAgoQRnVsbFJlc3VsdFJlYXNvbhIiCh5GVUxMX1JFU1VMVF9SRUFTT05fVU5TUEVDSUZJRUQQABIeChpGVUxMX1JFU1VMVF9SRUFTT05fTk9fQkFTRRABEiIKHkZVTExfUkVTVUxUX1JFQVNPTl9MQVdfQ0hBTkdFRBACEi0KKUZVTExfUkVTVUxUX1JFQVNPTl9SRUFEX0FVVEhPUklUWV9DSEFOR0VEEAMSKQolRlVMTF9SRVNVTFRfUkVBU09OX1BFUl9SRUNPUkRfUkVGVVNBTBAEEiMKH0ZVTExfUkVTVUxUX1JFQVNPTl9PUkRFUkVEX1JFQUQQBRImCiJGVUxMX1JFU1VMVF9SRUFTT05fVEVNUE9SQUxfRklFTERTEAYSJwojRlVMTF9SRVNVTFRfUkVBU09OX0JBU0VfVU5BVkFJTEFCTEUQBxIjCh9GVUxMX1JFU1VMVF9SRUFTT05fTEVHQUNZX1NUQVRFEAgqyQEKE0ludGVyZmFjZU1lbWJlcktpbmQSJQohSU5URVJGQUNFX01FTUJFUl9LSU5EX1VOU1BFQ0lGSUVEEAASIAocSU5URVJGQUNFX01FTUJFUl9LSU5EX0RPTUFJThABEiMKH0lOVEVSRkFDRV9NRU1CRVJfS0lORF9ESVJFQ1RJVkUQAhIjCh9JTlRFUkZBQ0VfTUVNQkVSX0tJTkRfQUdHUkVHQVRFEAMSHwobSU5URVJGQUNFX01FTUJFUl9LSU5EX0ZJRUxEEAQqiAIKHEludGVyZmFjZUNvbXBhdGliaWxpdHlTdGF0dXMSLgoqSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKAokSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfU1RBVFVTX0VYQUNUEAESLQopSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfU1RBVFVTX0NPTVBBVElCTEUQAhIuCipJTlRFUkZBQ0VfQ09NUEFUSUJJTElUWV9TVEFUVVNfVU5BVkFJTEFCTEUQAxIvCitJTlRFUkZBQ0VfQ09NUEFUSUJJTElUWV9TVEFUVVNfSU5DT01QQVRJQkxFEAQqwwMKHEludGVyZmFjZUNvbXBhdGliaWxpdHlSZWFzb24SLgoqSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX1VOU1BFQ0lGSUVEEAASMQotSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX0RPTUFJTl9NSVNTSU5HEAESMQotSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX01FTUJFUl9NSVNTSU5HEAISMAosSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX0ZJRUxEX01JU1NJTkcQAxI1CjFJTlRFUkZBQ0VfQ09NUEFUSUJJTElUWV9SRUFTT05fVkFMVUVfS0lORF9DSEFOR0VEEAQSNwozSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX1JFUVVJUkVEX0lOUFVUX0FEREVEEAUSMQotSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX01BVFJJWF9JTlZBTElEEAYSOAo0SU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX1dJUkVfQ09OVFJBQ1RfQ0hBTkdFRBAHKrcCChBNYWludGVuYW5jZVBoYXNlEiEKHU1BSU5URU5BTkNFX1BIQVNFX1VOU1BFQ0lGSUVEEAASJAogTUFJTlRFTkFOQ0VfUEhBU0VfUkVBRF9ET0NVTUVOVFMQARIiCh5NQUlOVEVOQU5DRV9QSEFTRV9TUUxJVEVfSU5ERVgQAhImCiJNQUlOVEVOQU5DRV9QSEFTRV9DT01NQU5EX0ZST05USUVSEAMSIwofTUFJTlRFTkFOQ0VfUEhBU0VfQ09NTUFORF9ST1VURRAEEiEKHU1BSU5URU5BTkNFX1BIQVNFX0dJVF9DVVNUT0RZEAUSJgoiTUFJTlRFTkFOQ0VfUEhBU0VfUkVBRF9JTkRFWF9DQUNIRRAGEh4KGk1BSU5URU5BTkNFX1BIQVNFX0NPTVBMRVRFEAcqigEKD1ZlcmlmeUNoYWluV2FsaxIhCh1WRVJJRllfQ0hBSU5fV0FMS19VTlNQRUNJRklFRBAAEhoKFlZFUklGWV9DSEFJTl9XQUxLX0ZVTEwQARIcChhWRVJJRllfQ0hBSU5fV0FMS19TVUZGSVgQAhIaChZWRVJJRllfQ0hBSU5fV0FMS19NRU1PEAMqcAoYRWZmZWN0RXhlY3V0aW9uUGxhY2VtZW50EioKJkVGRkVDVF9FWEVDVVRJT05fUExBQ0VNRU5UX1VOU1BFQ0lGSUVEEAASKAokRUZGRUNUX0VYRUNVVElPTl9QTEFDRU1FTlRfQ1VTVE9ESUFOEAEqdgoaRWZmZWN0RXhlY3V0aW9uQ2FyZGluYWxpdHkSLAooRUZGRUNUX0VYRUNVVElPTl9DQVJESU5BTElUWV9VTlNQRUNJRklFRBAAEioKJkVGRkVDVF9FWEVDVVRJT05fQ0FSRElOQUxJVFlfU0lOR0xFVE9OEAEqtwEKF01vZGVsTGlmZWN5Y2xlT3BlcmF0aW9uEikKJU1PREVMX0xJRkVDWUNMRV9PUEVSQVRJT05fVU5TUEVDSUZJRUQQABIlCiFNT0RFTF9MSUZFQ1lDTEVfT1BFUkFUSU9OX0lOU1RBTEwQARIjCh9NT0RFTF9MSUZFQ1lDTEVfT1BFUkFUSU9OX1NUQUdFEAISJQohTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9QUk9NT1RFEAMq3AEKHUNoaWxkV29ya3NwYWNlTGlmZWN5Y2xlU3RhdHVzEjAKLENISUxEX1dPUktTUEFDRV9MSUZFQ1lDTEVfU1RBVFVTX1VOU1BFQ0lGSUVEEAASKwonQ0hJTERfV09SS1NQQUNFX0xJRkVDWUNMRV9TVEFUVVNfQUNUSVZFEAESLAooQ0hJTERfV09SS1NQQUNFX0xJRkVDWUNMRV9TVEFUVVNfUkVUSVJFRBACEi4KKkNISUxEX1dPUktTUEFDRV9MSUZFQ1lDTEVfU1RBVFVTX1JFQ0xBSU1FRBADKvgBCiJEZWNsYXJlZEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJLaW5kEjUKMURFQ0xBUkVEX0FVVEhFTlRJQ0FUSU9OX1BST1ZJREVSX0tJTkRfVU5TUEVDSUZJRUQQABIyCi5ERUNMQVJFRF9BVVRIRU5USUNBVElPTl9QUk9WSURFUl9LSU5EX1NFTEVDVEVEEAESMgouREVDTEFSRURfQVVUSEVOVElDQVRJT05fUFJPVklERVJfS0lORF9FTlJPTExFRBACEjMKL0RFQ0xBUkVEX0FVVEhFTlRJQ0FUSU9OX1BST1ZJREVSX0tJTkRfU09WRVJFSUdOEAMqigEKFURlY2xhcmVkTGF3TWVtYmVyS2luZBIoCiRERUNMQVJFRF9MQVdfTUVNQkVSX0tJTkRfVU5TUEVDSUZJRUQQABIkCiBERUNMQVJFRF9MQVdfTUVNQkVSX0tJTkRfQ09NTUFORBABEiEKHURFQ0xBUkVEX0xBV19NRU1CRVJfS0lORF9SRUFEEAIqiwYKH1Byb3ZpZGVyVG9rZW5WZXJpZmljYXRpb25TdGF0dXMSMgouUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19VTlNQRUNJRklFRBAAEiwKKFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVkFMSUQQARI2CjJQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PX01BVENISU5HX0tFWRACEi4KKlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfRVhQSVJFRBADEjQKMFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfTk9UX1lFVF9WQUxJRBAEEjYKMlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfSVNTVUVSX01JU01BVENIEAUSOAo0UFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19BVURJRU5DRV9NSVNNQVRDSBAGEjQKMFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfQkFEX1NJR05BVFVSRRAHEjAKLFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfTUFMRk9STUVEEAgSPAo4UFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19VTlNVUFBPUlRFRF9BTEdPUklUSE0QCRIuCipQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0JBRF9LRVkQChI2CjJQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX01JU1NJTkdfU1VCSkVDVBALEjIKLlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfTk9fVkVSSUZJRVIQDBI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX01JU1NJTkdfVE9LRU4QDSrIAQoSRGV2aWNlU2lnbmVyU3RhdHVzEiQKIERFVklDRV9TSUdORVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASHwobREVWSUNFX1NJR05FUl9TVEFUVVNfQUNUSVZFEAESHwobREVWSUNFX1NJR05FUl9TVEFUVVNfQUJTRU5UEAISIAocREVWSUNFX1NJR05FUl9TVEFUVVNfUkVWT0tFRBADEigKJERFVklDRV9TSUdORVJfU1RBVFVTX0tFWV9VTkFWQUlMQUJMRRAEKtcBChNCaXJ0aEV2aWRlbmNlU3RhdHVzEiUKIUJJUlRIX0VWSURFTkNFX1NUQVRVU19VTlNQRUNJRklFRBAAEiYKIkJJUlRIX0VWSURFTkNFX1NUQVRVU19OT1RfUkVRVUlSRUQQARIfChtCSVJUSF9FVklERU5DRV9TVEFUVVNfUkVBRFkQAhItCilCSVJUSF9FVklERU5DRV9TVEFUVVNfREVMRUdBVElPTl9SRVFVSVJFRBADEiEKHUJJUlRIX0VWSURFTkNFX1NUQVRVU19JTlZBTElEEAQqsgEKEVF1ZXJ5UmVzdWx0Rm9ybWF0EiMKH1FVRVJZX1JFU1VMVF9GT1JNQVRfVU5TUEVDSUZJRUQQABIkCiBRVUVSWV9SRVNVTFRfRk9STUFUX0xFR0FDWV9WQUxVRRABEiQKIFFVRVJZX1JFU1VMVF9GT1JNQVRfTk9NSU5BTF9VU0RBEAISLAooUVVFUllfUkVTVUxUX0ZPUk1BVF9BUFBMSUNBVElPTl9QUk9UT0JVRhADKpUMCg5RdWVyeU9wZXJhdGlvbhIfChtRVUVSWV9PUEVSQVRJT05fVU5TUEVDSUZJRUQQABIcChhRVUVSWV9PUEVSQVRJT05fRVhUUkVNVU0QARIgChxRVUVSWV9PUEVSQVRJT05fUkVBRF9QT1NUVVJFEAQSHwobUVVFUllfT1BFUkFUSU9OX0NVUlJFTlRfTEFXEAUSIwofUVVFUllfT1BFUkFUSU9OX0lOVEVSRkFDRV9PRkZFUhAGEicKI1FVRVJZX09QRVJBVElPTl9SRUxBVElPTl9HQVRFX09GRkVSEAcSHQoZUVVFUllfT1BFUkFUSU9OX1NDRU5FX0xBVxAIEiEKHVFVRVJZX09QRVJBVElPTl9JTlNUQUxMRURfTEFXEAkSHAoYUVVFUllfT1BFUkFUSU9OX0RFU0NSSUJFEAoSIwofUVVFUllfT1BFUkFUSU9OX0tFUk5FTF9SRVNPVVJDRRALEiMKH1FVRVJZX09QRVJBVElPTl9ERVZFTE9QRVJfU1BBTlMQDBIpCiVRVUVSWV9PUEVSQVRJT05fREVDTEFSRURfQ0FQQUJJTElUSUVTEA0SHQoZUVVFUllfT1BFUkFUSU9OX1JFQURJTkVTUxAOEiQKIFFVRVJZX09QRVJBVElPTl9QUk9KRUNUSU9OX1NUQVRTEA8SJQohUVVFUllfT1BFUkFUSU9OX01FTU9SWV9EUk9QX1BST0JFEBASGAoUUVVFUllfT1BFUkFUSU9OX1dBUk0QERIbChdRVUVSWV9PUEVSQVRJT05fUkVGUkVTSBASEiAKHFFVRVJZX09QRVJBVElPTl9WRVJJRllfQ0hBSU4QExIiCh5RVUVSWV9PUEVSQVRJT05fQ09VTlRFUkZBQ1RVQUwQFBIZChVRVUVSWV9PUEVSQVRJT05fUk9VVEUQFRIlCiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1NFQUxfRklFTEQQGBIsCihRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX0JMSU5EX0lOREVYX1RPS0VOEBkSKgomUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9TQ09QRV9LRVkQGhIvCitRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX09XTkVEX0RFVklDRV9SRVFVRVNUEBsSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX0FQUFJPVkFMEBwSMQotUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9QUkVQQVJFX1JFQ09WRVJZEB0SIAocUVVFUllfT1BFUkFUSU9OX1JFQ0VJUFRfUEFUSBAiEh0KGVFVRVJZX09QRVJBVElPTl9DRVJUX1NJR04QIxIlCiFRVUVSWV9PUEVSQVRJT05fQklSVEhfVFJVU1RfU1RBVEUQJBIhCh1RVUVSWV9PUEVSQVRJT05fRVJBX0NFUlRfU0lHThAlEigKJFFVRVJZX09QRVJBVElPTl9ERUxFR0FUSU9OX0NFUlRfU0lHThAmEikKJVFVRVJZX09QRVJBVElPTl9DQU5PTklDQUxJWkVfRlJPTlRJRVIQJxIrCidRVUVSWV9PUEVSQVRJT05fQ0FOT05JQ0FMSVpFX1BST0pFQ1RJT04QKCIECAIQAiIECAMQAyIECBYQFiIECBcQFyIECB4QHiIECB8QHyIECCAQICIECCEQISohUVVFUllfT1BFUkFUSU9OX1BFTkRJTkdfQ09ORkxJQ1RTKihRVUVSWV9PUEVSQVRJT05fUEVORElOR19DT05GTElDVF9TVU1NQVJZKhRRVUVSWV9PUEVSQVRJT05fTUlOVCodUVVFUllfT1BFUkFUSU9OX0NSWVBUT19LRVlHRU4qH1FVRVJZX09QRVJBVElPTl9DUllQVE9fV1JBUF9LRVkqIVFVRVJZX09QRVJBVElPTl9DUllQVE9fVU5XUkFQX0tFWSodUVVFUllfT1BFUkFUSU9OX0FVVEhPUl9LRVlHRU4qIFFVRVJZX09QRVJBVElPTl9BVFRFU1RBVElPTl9TSUdOKqkBChlSZWFkUHJvamVjdGlvblN0b3JhZ2VLaW5kEiwKKFJFQURfUFJPSkVDVElPTl9TVE9SQUdFX0tJTkRfVU5TUEVDSUZJRUQQABIpCiVSRUFEX1BST0pFQ1RJT05fU1RPUkFHRV9LSU5EX1JFU0lERU5UEAESMwovUkVBRF9QUk9KRUNUSU9OX1NUT1JBR0VfS0lORF9GSUxFX0JBQ0tFRF9TQ0FMQVIQAirSAgoVUmVzaWRlbnRDb21wb25lbnRLaW5kEicKI1JFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1VOU1BFQ0lGSUVEEAASJgoiUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfRk9MRF9TVEFURRABEi0KKVJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1JFQURfTU9ERUxfU1FMSVRFEAISLgoqUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfUkVBRF9NT0RFTF9JTkRFWEVTEAMSLQopUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfU0hBUkVEX0FUVFJJQlVURUQQBBIsCihSRVNJREVOVF9DT01QT05FTlRfS0lORF9XT1JLU1BBQ0VfQ0FDSEVTEAUSLAooUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfR0lUX09CSkVDVF9DQUNIRRAGKmwKE0tlcm5lbExhd0NhcGFiaWxpdHkSJQohS0VSTkVMX0xBV19DQVBBQklMSVRZX1VOU1BFQ0lGSUVEEAASLgoqS0VSTkVMX0xBV19DQVBBQklMSVRZX1NUQUdFX1pFUk9fQk9PVFNUUkFQEAEqWQoVQ2hlY2twb2ludENvbXByZXNzaW9uEh8KG0NIRUNLUE9JTlRfQ09NUFJFU1NJT05fTk9ORRAAEh8KG0NIRUNLUE9JTlRfQ09NUFJFU1NJT05fR1pJUBABKpEBChxDaGVja3BvaW50VmVyaWZpY2F0aW9uUG9saWN5EjMKL0NIRUNLUE9JTlRfVkVSSUZJQ0FUSU9OX1BPTElDWV9WRVJJRllfQ0FOT05JQ0FMEAASPAo4Q0hFQ0tQT0lOVF9WRVJJRklDQVRJT05fUE9MSUNZX1RSVVNUX1BSRVZJT1VTTFlfVkVSSUZJRUQQASqAAQoTQ2hlY2twb2ludEFzc3VyYW5jZRIkCiBDSEVDS1BPSU5UX0FTU1VSQU5DRV9VTlNQRUNJRklFRBAAEiAKHENIRUNLUE9JTlRfQVNTVVJBTkNFX1RSVVNURUQQARIhCh1DSEVDS1BPSU5UX0FTU1VSQU5DRV9WRVJJRklFRBACKokBChVLZXJuZWxSZXNpZGVuY3lJbnRlbnQSJwojS0VSTkVMX1JFU0lERU5DWV9JTlRFTlRfVU5TUEVDSUZJRUQQABIgChxLRVJORUxfUkVTSURFTkNZX0lOVEVOVF9XQVJNEAESJQohS0VSTkVMX1JFU0lERU5DWV9JTlRFTlRfT05fREVNQU5EEAIqrgEKFkN1c3RvZHlSZXRlbnRpb25JbnRlbnQSKAokQ1VTVE9EWV9SRVRFTlRJT05fSU5URU5UX1VOU1BFQ0lGSUVEEAASIwofQ1VTVE9EWV9SRVRFTlRJT05fSU5URU5UX1JFVEFJThABEiIKHkNVU1RPRFlfUkVURU5USU9OX0lOVEVOVF9DQUNIRRACEiEKHUNVU1RPRFlfUkVURU5USU9OX0lOVEVOVF9OT05FEAMqqAEKGkludGVudFRyYW5zcG9ydFJlcXVpcmVtZW50EiwKKElOVEVOVF9UUkFOU1BPUlRfUkVRVUlSRU1FTlRfVU5TUEVDSUZJRUQQABIuCipJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX1NFQUxFRF9DSEFOR0UQARIsCihJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX0NPTU1JVF9UUkVFEAIqiQEKFUxpZmVjeWNsZUluc3RhbGxQaGFzZRInCiNMSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9VTlNQRUNJRklFRBAAEiIKHkxJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX0FDVElWRRABEiMKH0xJRkVDWUNMRV9JTlNUQUxMX1BIQVNFX1BFTkRJTkcQAjJZChJOb21vc0tlcm5lbFNlcnZpY2USQwoEQ2FsbBIcLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVxdWVzdBodLm5vbW9zLmtlcm5lbC52MS5DYWxsUmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_any]);
4711
+ var file_nomos_kernel_v1_kernel = /* @__PURE__ */ fileDesc("Chxub21vcy9rZXJuZWwvdjEva2VybmVsLnByb3RvEg9ub21vcy5rZXJuZWwudjEixgkKC0NhbGxSZXF1ZXN0EhgKEHByb3RvY29sX3ZlcnNpb24YASABKA0SEgoKcmVxdWVzdF9pZBgCIAEoCRIsCgRvcGVuGAogASgLMhwubm9tb3Mua2VybmVsLnYxLk9wZW5SZXF1ZXN0SAASLgoFb2ZmZXIYCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXF1ZXN0SAASLgoFcXVlcnkYDCABKAsyHS5ub21vcy5rZXJuZWwudjEuUXVlcnlSZXF1ZXN0SAASMAoGb3V0Ym94GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJveFJlcXVlc3RIABIsCgRzeW5jGA4gASgLMhwubm9tb3Mua2VybmVsLnYxLlN5bmNSZXF1ZXN0SAASMgoHY3VzdG9keRgPIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmVxdWVzdEgAEkAKCWNvbmZpZ3VyZRgQIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxDb25maWd1cmF0aW9uUmVxdWVzdEgAEkgKE3NpZ25fcHJlcGFyZWRfb2ZmZXIYESABKAsyKS5ub21vcy5rZXJuZWwudjEuU2lnblByZXBhcmVkT2ZmZXJSZXF1ZXN0SAASSgoUcHJlcGFyZV9yZW1vdGVfb2ZmZXIYEiABKAsyKi5ub21vcy5rZXJuZWwudjEuUHJlcGFyZVJlbW90ZU9mZmVyUmVxdWVzdEgAEk4KFnNpZ25fb2ZmZXJfcHJlcGFyYXRpb24YEyABKAsyLC5ub21vcy5rZXJuZWwudjEuU2lnbk9mZmVyUHJlcGFyYXRpb25SZXF1ZXN0SAASTgoWc2lnbl9iaXJ0aF9jZXJ0aWZpY2F0ZRgUIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5TaWduQmlydGhDZXJ0aWZpY2F0ZVJlcXVlc3RIABJDChBzaWduaW5nX2lkZW50aXR5GBcgASgLMicubm9tb3Mua2VybmVsLnYxLlNpZ25pbmdJZGVudGl0eVJlcXVlc3RIABJWChpzaWduX2F1dGhvcml0eV9hdHRlc3RhdGlvbhgYIAEoCzIwLm5vbW9zLmtlcm5lbC52MS5TaWduQXV0aG9yaXR5QXR0ZXN0YXRpb25SZXF1ZXN0SAASPAoNbWludF90eXBlZF9pZBgZIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5NaW50VHlwZWRJZFJlcXVlc3RIABJJChNlbmNyeXB0aW9uX2lkZW50aXR5GBogASgLMioubm9tb3Mua2VybmVsLnYxLkVuY3J5cHRpb25JZGVudGl0eVJlcXVlc3RIABI+Cg53cmFwX3Njb3BlX2tleRgbIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5XcmFwU2NvcGVLZXlSZXF1ZXN0SAASQgoQdW53cmFwX3Njb3BlX2tleRgcIAEoCzImLm5vbW9zLmtlcm5lbC52MS5VbndyYXBTY29wZUtleVJlcXVlc3RIAEILCglvcGVyYXRpb25KBAgVEBZKBAgWEBdSFGluaXRpYWxpemVfd29ya3NwYWNlUhZhcHBseV93b3Jrc3BhY2VfZWZmZWN0IoMKCgxDYWxsUmVzcG9uc2USGAoQcHJvdG9jb2xfdmVyc2lvbhgBIAEoDRISCgpyZXF1ZXN0X2lkGAIgASgJEisKB2ZhaWx1cmUYCiABKAsyGC5ub21vcy5rZXJuZWwudjEuRmFpbHVyZUgAEi0KBG9wZW4YCyABKAsyHS5ub21vcy5rZXJuZWwudjEuT3BlblJlc3BvbnNlSAASLwoFb2ZmZXIYDCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUgAEi8KBXF1ZXJ5GA0gASgLMh4ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5UmVzcG9uc2VIABIxCgZvdXRib3gYDiABKAsyHy5ub21vcy5rZXJuZWwudjEuT3V0Ym94UmVzcG9uc2VIABItCgRzeW5jGA8gASgLMh0ubm9tb3Mua2VybmVsLnYxLlN5bmNSZXNwb25zZUgAEjMKB2N1c3RvZHkYECABKAsyIC5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVJlc3BvbnNlSAASQQoJY29uZmlndXJlGBEgASgLMiwubm9tb3Mua2VybmVsLnYxLktlcm5lbENvbmZpZ3VyYXRpb25SZXNwb25zZUgAEkkKE3NpZ25fcHJlcGFyZWRfb2ZmZXIYEiABKAsyKi5ub21vcy5rZXJuZWwudjEuU2lnblByZXBhcmVkT2ZmZXJSZXNwb25zZUgAEksKFHByZXBhcmVfcmVtb3RlX29mZmVyGBMgASgLMisubm9tb3Mua2VybmVsLnYxLlByZXBhcmVSZW1vdGVPZmZlclJlc3BvbnNlSAASTwoWc2lnbl9vZmZlcl9wcmVwYXJhdGlvbhgUIAEoCzItLm5vbW9zLmtlcm5lbC52MS5TaWduT2ZmZXJQcmVwYXJhdGlvblJlc3BvbnNlSAASTwoWc2lnbl9iaXJ0aF9jZXJ0aWZpY2F0ZRgVIAEoCzItLm5vbW9zLmtlcm5lbC52MS5TaWduQmlydGhDZXJ0aWZpY2F0ZVJlc3BvbnNlSAASRAoQc2lnbmluZ19pZGVudGl0eRgYIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5TaWduaW5nSWRlbnRpdHlSZXNwb25zZUgAElcKGnNpZ25fYXV0aG9yaXR5X2F0dGVzdGF0aW9uGBkgASgLMjEubm9tb3Mua2VybmVsLnYxLlNpZ25BdXRob3JpdHlBdHRlc3RhdGlvblJlc3BvbnNlSAASPQoNbWludF90eXBlZF9pZBgaIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5NaW50VHlwZWRJZFJlc3BvbnNlSAASSgoTZW5jcnlwdGlvbl9pZGVudGl0eRgbIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5FbmNyeXB0aW9uSWRlbnRpdHlSZXNwb25zZUgAEj8KDndyYXBfc2NvcGVfa2V5GBwgASgLMiUubm9tb3Mua2VybmVsLnYxLldyYXBTY29wZUtleVJlc3BvbnNlSAASQwoQdW53cmFwX3Njb3BlX2tleRgdIAEoCzInLm5vbW9zLmtlcm5lbC52MS5VbndyYXBTY29wZUtleVJlc3BvbnNlSABCCQoHb3V0Y29tZUoECBYQF0oECBcQGFIUaW5pdGlhbGl6ZV93b3Jrc3BhY2VSFmFwcGx5X3dvcmtzcGFjZV9lZmZlY3QitwIKB0ZhaWx1cmUSDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSYQoiaWRlbnRpdHlfcHJvdmlkZXJfd2l0bmVzc19yZXF1aXJlZBgKIAEoCzIwLm5vbW9zLmtlcm5lbC52MS5JZGVudGl0eVByb3ZpZGVyV2l0bmVzc1JlcXVpcmVkSACIAQESPwoQaGlzdG9yeV9yZXF1aXJlZBgLIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5IaXN0b3J5UmVxdWlyZWRIAYgBAUIlCiNfaWRlbnRpdHlfcHJvdmlkZXJfd2l0bmVzc19yZXF1aXJlZEITChFfaGlzdG9yeV9yZXF1aXJlZCJRCh9JZGVudGl0eVByb3ZpZGVyV2l0bmVzc1JlcXVpcmVkEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSFAoMcmVxdWlyZWRfa2lkGAIgASgJIjwKDE9wZW5SZXNwb25zZRIsCgZyZXN1bHQYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QiugQKDU9mZmVyUmVzcG9uc2USMgoIYWRtaXR0ZWQYASABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJBZG1pdHRlZEgAEjAKB3JlZnVzZWQYAiABKAsyHS5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZWZ1c2VkSAASOwoNZGVhZF9sZXR0ZXJlZBgDIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5PZmZlckRlYWRMZXR0ZXJlZEgAEjgKC3F1YXJhbnRpbmVkGAQgASgLMiEubm9tb3Mua2VybmVsLnYxLk9mZmVyUXVhcmFudGluZWRIABJKChVibG9ja2VkX29uX2RlcGVuZGVuY3kYBSABKAsyKS5ub21vcy5rZXJuZWwudjEuT2ZmZXJCbG9ja2VkT25EZXBlbmRlbmN5SAASMgoIcHJlcGFyZWQYBiABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJQcmVwYXJlZEgAEkIKEHdvcmtzcGFjZV9lZmZlY3QYByABKAsyKC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlRWZmZWN0SWRlbnRpdHkSGwoOanVkZ2VkX2F0X2hlYWQYCCABKAlIAYgBARJNChJqdWRnbWVudF9zaWduYXR1cmUYCSABKAsyMS5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlRWZmZWN0SnVkZ21lbnRTaWduYXR1cmVCCQoHb3V0Y29tZUIRCg9fanVkZ2VkX2F0X2hlYWQifwogV29ya3NwYWNlRWZmZWN0SnVkZ21lbnRTaWduYXR1cmUSDwoHdmVyc2lvbhgBIAEoDRISCgpwdWJsaWNfa2V5GAIgASgMEhEKCWtleV9lcG9jaBgDIAEoEhIRCglzaWduYXR1cmUYBCABKAwSEAoIanVkZ21lbnQYBSABKAwiqAEKF1dvcmtzcGFjZUVmZmVjdElkZW50aXR5EhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAkSIAoYc291cmNlX3dvcmtzcGFjZV9nZW5lc2lzGAIgASgJEhgKEHRhcmdldF93b3Jrc3BhY2UYAyABKAkSIAoYdGFyZ2V0X3dvcmtzcGFjZV9nZW5lc2lzGAQgASgJEhUKDWVmZmVjdF9kaWdlc3QYBSABKAkiVwocV29ya3NwYWNlRWZmZWN0U3RhdHVzUmVxdWVzdBIgChhzb3VyY2Vfd29ya3NwYWNlX2dlbmVzaXMYASABKAkSFQoNZWZmZWN0X2RpZ2VzdBgCIAEoCSJRCh1Xb3Jrc3BhY2VFZmZlY3RTdGF0dXNSZXNwb25zZRIwCghqdWRnbWVudBgBIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5PZmZlclJlc3BvbnNlIoYCCiNSZWNvcmRXb3Jrc3BhY2VFZmZlY3RPdXRjb21lUmVxdWVzdBIwCgZzb3VyY2UYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EhkKEXNvdXJjZV9vZmZlcl9wYXRoGAIgASgJEhUKC21haWxib3hfdXJsGAMgASgJSAASPQoRcmVjaXBpZW50X2N1c3RvZHkYBSABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0SAASMAoIanVkZ21lbnQYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuT2ZmZXJSZXNwb25zZUIKCghldmlkZW5jZSJaCh5SZWNvcmRlZFdvcmtzcGFjZUVmZmVjdE91dGNvbWUSEQoJcmVmZXJlbmNlGAEgASgJEgsKA29pZBgCIAEoCRIYChB0ZXJtaW5hbF9yZWZ1c2FsGAMgASgIIq4FCg1PZmZlckFkbWl0dGVkEgwKBGhlYWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEhcKCmludGVudF9vdXQYAyABKAlIAIgBARIzCgdjcmVhdGVkGAQgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEjQKCGFmZmVjdGVkGAUgAygLMiIubm9tb3Mua2VybmVsLnYxLk9mZmVyQWdncmVnYXRlUmVmEiwKBGJvcm4YBiADKAsyHi5ub21vcy5rZXJuZWwudjEuQm9ybldvcmtzcGFjZRI1Cg5iaXJ0aF9vdXRjb21lcxgHIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSNwoMa2VybmVsX3NwYW5zGAggASgLMhwubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5zSAGIAQESDwoHZHJ5X3J1bhgJIAEoCBIfChJpbnN0YWxsZWRfbGF3X2hhc2gYCiABKAlIAogBARI5CglwbGFjZW1lbnQYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuUGxhY2VtZW50QWRvcHRlZEgDiAEBEhcKD2FscmVhZHlfYXBwbGllZBgMIAEoCBI8CgxzdGF0ZV9jaGFuZ2UYDSABKAsyIS5ub21vcy5rZXJuZWwudjEuT2ZmZXJTdGF0ZUNoYW5nZUgEiAEBEkAKFGxhd192ZXJzaW9uX3dhcm5pbmdzGA4gAygLMiIubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25XYXJuaW5nQg0KC19pbnRlbnRfb3V0Qg8KDV9rZXJuZWxfc3BhbnNCFQoTX2luc3RhbGxlZF9sYXdfaGFzaEIMCgpfcGxhY2VtZW50Qg8KDV9zdGF0ZV9jaGFuZ2UiIwoLTGF3SWRlbnRpdHkSFAoMcGFja2FnZV9uYW1lGAEgASgJIiQKCkxhd1ZlcnNpb24SFgoOY2xvc3VyZV9zaGEyNTYYASABKAkiIQoPTGF3VmVyc2lvbkNsYWltEg4KBnNlbXZlchgBIAEoCSLgAgoRTGF3VmVyc2lvbldhcm5pbmcSKQoDbGF3GAEgASgLMhwubm9tb3Mua2VybmVsLnYxLkxhd0lkZW50aXR5Ei8KBW9yZGVyGAIgASgOMiAubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25PcmRlchI5Cg9pbnN0YWxsZWRfY2xhaW0YAyABKAsyIC5ub21vcy5rZXJuZWwudjEuTGF3VmVyc2lvbkNsYWltEjYKEWluc3RhbGxlZF92ZXJzaW9uGAQgASgLMhsubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb24SNgoMc2VydmVkX2NsYWltGAUgASgLMiAubm9tb3Mua2VybmVsLnYxLkxhd1ZlcnNpb25DbGFpbRIzCg5zZXJ2ZWRfdmVyc2lvbhgGIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5MYXdWZXJzaW9uEg8KB21lc3NhZ2UYByABKAkiUgoQT2ZmZXJTdGF0ZUNoYW5nZRITCgtwYXJlbnRfaGVhZBgBIAEoCRIXCg9hZ2dyZWdhdGVfdHlwZXMYAiADKAkSEAoIYXJjaGl2ZXMYAyABKAgiLQoRT2ZmZXJBZ2dyZWdhdGVSZWYSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSIwCg1Cb3JuV29ya3NwYWNlEhEKCXdvcmtzcGFjZRgBIAEoCRIMCgRoZWFkGAIgASgJIssDCgxCaXJ0aE91dGNvbWUSFgoJd29ya3NwYWNlGAEgASgJSACIAQESMwoGc3RhdHVzGAIgASgOMiMubm9tb3Mua2VybmVsLnYxLkJpcnRoT3V0Y29tZVN0YXR1cxITCgZyZWFzb24YAyABKAlIAYgBARIRCgRjb2RlGAQgASgJSAKIAQESEAoIcmVwbGF5ZWQYBSABKAgSFQoIbGF3X2hhc2gYBiABKAlIA4gBARIdChBwYXJlbnRfd29ya3NwYWNlGAcgASgJSASIAQESHAoPY2hpbGRfd29ya3NwYWNlGAggASgJSAWIAQESJwoaY2VydGlmaWNhdGVfcmVmdXNhbF9yZWFzb24YCSABKAlIBogBARI0CgdyZWZ1c2FsGAogASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxIB4gBAUIMCgpfd29ya3NwYWNlQgkKB19yZWFzb25CBwoFX2NvZGVCCwoJX2xhd19oYXNoQhMKEV9wYXJlbnRfd29ya3NwYWNlQhIKEF9jaGlsZF93b3Jrc3BhY2VCHQobX2NlcnRpZmljYXRlX3JlZnVzYWxfcmVhc29uQgoKCF9yZWZ1c2FsIi8KEEtlcm5lbFNwYW5NZXRyaWMSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoBCKjAQoKS2VybmVsU3BhbhINCgVsYWJlbBgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBBIPCgdyZWNvcmRzGAMgASgEEjEKBnBoYXNlcxgEIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuTWV0cmljEjAKBW5vdGVzGAUgAygLMiEubm9tb3Mua2VybmVsLnYxLktlcm5lbFNwYW5NZXRyaWMicQoLS2VybmVsU3BhbnMSLwoKb3BlcmF0aW9ucxgBIAMoCzIbLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuEjEKBmVuZ2luZRgCIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxTcGFuTWV0cmljImEKDURvbWFpblJlZnVzYWwSEgoKbGF3X3NoYTI1NhgBIAEoDBIRCglpbnZhcmlhbnQYAiABKAkSFQoNdHlwZV9pZGVudGl0eRgDIAEoCRISCgp2YWx1ZV91c2RhGAQgASgMIs4BCgxPZmZlclJlZnVzZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIvCgdyZWZ1c2FsGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWwSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSNgoOZG9tYWluX3JlZnVzYWwYBCABKAsyHi5ub21vcy5rZXJuZWwudjEuRG9tYWluUmVmdXNhbEILCglfb2ZmZXJfaWQiegoRT2ZmZXJEZWFkTGV0dGVyZWQSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZyZWFzb24YAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIq4BChBPZmZlclF1YXJhbnRpbmVkEhUKCG9mZmVyX2lkGAEgASgJSACIAQESGQoRYXV0aG9yZWRfbGF3X2hhc2gYAiABKAkSGAoQY3VycmVudF9sYXdfaGFzaBgDIAEoCRIOCgZyZWFzb24YBCABKAkSMQoLZGlhZ25vc3RpY3MYBSABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3RCCwoJX29mZmVyX2lkIsABChhPZmZlckJsb2NrZWRPbkRlcGVuZGVuY3kSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIOCgZkZXRhaWwYAiABKAkSMQoLZGlhZ25vc3RpY3MYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSPQoSYXdhaXRzX21haW50ZW5hbmNlGAQgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlYWRJbmRleFBlbmRpbmdCCwoJX29mZmVyX2lkIr8BCg1PZmZlclByZXBhcmVkEhwKFGF1dGhvcmVkX2NoYW5nZV91c2RhGAEgASgMEhkKEXdvcmtzcGFjZV9iaW5kaW5nGAIgASgJEhgKEHByZXBhcmVkX2F0X2hlYWQYAyABKAkSIQoZYXV0aG9yX3NpZ25hdHVyZV9yZXF1aXJlZBgEIAEoCBI4CghkZXRhY2hlZBgFIAEoCzImLm5vbW9zLmtlcm5lbC52MS5EZXRhY2hlZFNpZ25pbmdJbnB1dHMiYwoVRGV0YWNoZWRTaWduaW5nSW5wdXRzEhIKCnB1YmxpY19rZXkYASABKAwSEQoJaW50ZW50X2lkGAIgASgJEg4KBmF1dGhvchgDIAEoDBITCgtvZmZlcl90b2tlbhgEIAEoCSKVAQoURGV0YWNoZWRTaWduZWRDaGFuZ2USHAoUYXV0aG9yZWRfY2hhbmdlX3VzZGEYASABKAwSEgoKcHVibGljX2tleRgCIAEoDBIYChBhdXRob3Jfc2lnbmF0dXJlGAMgASgMEhIKCm9mZmVyX2Jhc2UYBCABKAkSHQoVb2ZmZXJfdG9rZW5fc2lnbmF0dXJlGAUgASgMImoKGFNpZ25QcmVwYXJlZE9mZmVyUmVxdWVzdBIcChRhdXRob3JlZF9jaGFuZ2VfdXNkYRgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIVCg1hdXRob3Jfc2VjcmV0GAMgASgMIjcKGVNpZ25QcmVwYXJlZE9mZmVyUmVzcG9uc2USGgoSc2lnbmVkX2NoYW5nZV91c2RhGAEgASgMIq0BChlQcmVwYXJlUmVtb3RlT2ZmZXJSZXF1ZXN0EhUKDW9mZmVyX3JlcXVlc3QYASABKAwSGQoRd29ya3NwYWNlX2JpbmRpbmcYAiABKAkSGAoQcHJlcGFyZWRfYXRfaGVhZBgDIAEoCRISCgpwdWJsaWNfa2V5GAQgASgMEhEKCXNpZ25hdHVyZRgFIAEoDBIdChVyZXF1aXJlZF9jdXN0b2R5X2hlYWQYBiABKAkiUAoZT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZRIZChF3b3Jrc3BhY2VfYmluZGluZxgBIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAIgASgJIpkBChpQcmVwYXJlUmVtb3RlT2ZmZXJSZXNwb25zZRI/CgljaGFsbGVuZ2UYASABKAsyKi5ub21vcy5rZXJuZWwudjEuT2ZmZXJQcmVwYXJhdGlvbkNoYWxsZW5nZUgAEi8KBW9mZmVyGAIgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIAEIJCgdvdXRjb21lIoABChtTaWduT2ZmZXJQcmVwYXJhdGlvblJlcXVlc3QSFQoNb2ZmZXJfcmVxdWVzdBgBIAEoDBIZChF3b3Jrc3BhY2VfYmluZGluZxgCIAEoCRIYChBwcmVwYXJlZF9hdF9oZWFkGAMgASgJEhUKDWF1dGhvcl9zZWNyZXQYBCABKAwiRQocU2lnbk9mZmVyUHJlcGFyYXRpb25SZXNwb25zZRISCgpwdWJsaWNfa2V5GAEgASgMEhEKCXNpZ25hdHVyZRgCIAEoDCKkAQoWU2lnbmluZ0lkZW50aXR5UmVxdWVzdBI7CghnZW5lcmF0ZRgBIAEoCzInLm5vbW9zLmtlcm5lbC52MS5HZW5lcmF0ZVNpZ25pbmdLZXlQYWlySAASQAoNZGVyaXZlX3B1YmxpYxgCIAEoCzInLm5vbW9zLmtlcm5lbC52MS5EZXJpdmVTaWduaW5nUHVibGljS2V5SABCCwoJb3BlcmF0aW9uIhgKFkdlbmVyYXRlU2lnbmluZ0tleVBhaXIiKAoWRGVyaXZlU2lnbmluZ1B1YmxpY0tleRIOCgZzZWNyZXQYASABKAwilgEKF1NpZ25pbmdJZGVudGl0eVJlc3BvbnNlEjQKCWdlbmVyYXRlZBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5TaWduaW5nS2V5UGFpckgAEjsKDmRlcml2ZWRfcHVibGljGAIgASgLMiEubm9tb3Mua2VybmVsLnYxLlNpZ25pbmdQdWJsaWNLZXlIAEIICgZyZXN1bHQiNAoOU2lnbmluZ0tleVBhaXISDgoGc2VjcmV0GAEgASgMEhIKCnB1YmxpY19rZXkYAiABKAwiJgoQU2lnbmluZ1B1YmxpY0tleRISCgpwdWJsaWNfa2V5GAEgASgMIpwBCh9TaWduQXV0aG9yaXR5QXR0ZXN0YXRpb25SZXF1ZXN0EhUKDXNpZ25lcl9zZWNyZXQYASABKAwSGgoSYXNzZXJ0ZXJfd29ya3NwYWNlGAIgASgJEg4KBm9iamVjdBgDIAEoCRIQCghyZWxhdGlvbhgEIAEoCRIPCgdzdWJqZWN0GAUgASgJEhMKC2F0dGVzdGVkX2F0GAYgASgJIkkKIFNpZ25BdXRob3JpdHlBdHRlc3RhdGlvblJlc3BvbnNlEhEKCXNpZ25hdHVyZRgBIAEoDBISCgpwdWJsaWNfa2V5GAIgASgMIkQKEk1pbnRUeXBlZElkUmVxdWVzdBIQCgh0eXBlX3RhZxgBIAEoCRIcChRjYXB0dXJlZF91bml4X21pbGxpcxgCIAEoBCIhChNNaW50VHlwZWRJZFJlc3BvbnNlEgoKAmlkGAEgASgJIhsKGUVuY3J5cHRpb25JZGVudGl0eVJlcXVlc3QiRAoaRW5jcnlwdGlvbklkZW50aXR5UmVzcG9uc2USEgoKc2VjcmV0X2tleRgBIAEoDBISCgpwdWJsaWNfa2V5GAIgASgMIkYKE1dyYXBTY29wZUtleVJlcXVlc3QSHAoUcmVjaXBpZW50X3B1YmxpY19rZXkYASABKAwSEQoJc2NvcGVfa2V5GAIgASgMIkgKFFdyYXBTY29wZUtleVJlc3BvbnNlEhwKFGVwaGVtZXJhbF9wdWJsaWNfa2V5GAEgASgMEhIKCmNpcGhlcnRleHQYAiABKAwiZwoVVW53cmFwU2NvcGVLZXlSZXF1ZXN0EhwKFHJlY2lwaWVudF9zZWNyZXRfa2V5GAEgASgMEhwKFGVwaGVtZXJhbF9wdWJsaWNfa2V5GAIgASgMEhIKCmNpcGhlcnRleHQYAyABKAwiKwoWVW53cmFwU2NvcGVLZXlSZXNwb25zZRIRCglzY29wZV9rZXkYASABKAwikwEKDUtlcm5lbFJlZnVzYWwSMAoEY29kZRgBIAEoDjIiLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsQ29kZRIPCgdtZXNzYWdlGAIgASgJEi0KB2RldGFpbHMYAyABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEAoIdGVybWluYWwYBCABKAgixxAKDVF1ZXJ5UmVzcG9uc2USFQoLcmVzdWx0X3VzZGEYAiABKAxIABIsCgV2YWx1ZRgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlSAASSgoTYXV0aG9yaXphdGlvbl9jaGVjaxgKIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZUgAEkwKFGF1dGhvcml6YXRpb25fZXhwYW5kGAsgASgLMiwubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBhbmRSZXNwb25zZUgAEj4KDW9zZ2lfcmVzb3VyY2UYDCABKAsyJS5ub21vcy5rZXJuZWwudjEuT3NnaVJlc291cmNlUmVzcG9uc2VIABJKChNmcm9udGllcl90cmFuc2l0aW9uGA0gASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAASSwoUb3duZWRfZGV2aWNlX3JlcXVlc3QYDiABKAsyKy5ub21vcy5rZXJuZWwudjEuT3duZWREZXZpY2VSZXF1ZXN0UmVzcG9uc2VIABJPChZvd25lZF9wcmVwYXJlX2FwcHJvdmFsGA8gASgLMi0ubm9tb3Mua2VybmVsLnYxLk93bmVkUHJlcGFyZUFwcHJvdmFsUmVzcG9uc2VIABIXCg1pbnRlZ2VyX3ZhbHVlGBAgASgSSAASUAoWYXV0aGVudGljYXRpb25fcG9zdHVyZRgRIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRoZW50aWNhdGlvblBvc3R1cmVSZXNwb25zZUgAEkgKEGNoaWxkX3dvcmtzcGFjZXMYEiABKAsyLC5ub21vcy5rZXJuZWwudjEuQ2hpbGRXb3Jrc3BhY2VRdWVyeVJlc3BvbnNlSAASWQoWYXV0aG9yaW5nX3JlcXVpcmVtZW50cxgTIAEoCzI3Lm5vbW9zLmtlcm5lbC52MS5EaXJlY3RpdmVBdXRob3JpbmdSZXF1aXJlbWVudHNSZXNwb25zZUgAEj4KDXdhcm1fcHJvZ3Jlc3MYFSABKAsyJS5ub21vcy5rZXJuZWwudjEuV2FybVByb2dyZXNzUmVzcG9uc2VIABJVChlpZGVudGl0eV9wcm92aWRlcl93aXRuZXNzGBYgASgLMjAubm9tb3Mua2VybmVsLnYxLklkZW50aXR5UHJvdmlkZXJXaXRuZXNzUmVzcG9uc2VIABJSChdpbnRlcmZhY2VfY29tcGF0aWJpbGl0eRgXIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5JbnRlcmZhY2VDb21wYXRpYmlsaXR5UmVzcG9uc2VIABIyChJhcHBsaWNhdGlvbl9yZXN1bHQYGCABKAsyFC5nb29nbGUucHJvdG9idWYuQW55SAASSgoTbWFpbnRlbmFuY2VfcXVhbnR1bRgZIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5NYWludGVuYW5jZVF1YW50dW1SZXNwb25zZUgAEj8KEnJlYWRfaW5kZXhfcGVuZGluZxgaIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZWFkSW5kZXhQZW5kaW5nSAASRwoSZnVsbF9oaXN0b3J5X2F1ZGl0GBsgASgLMikubm9tb3Mua2VybmVsLnYxLkZ1bGxIaXN0b3J5QXVkaXRSZXNwb25zZUgAElMKGHdvcmtzcGFjZV9lZmZlY3RfcmVjZWlwdBgcIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VFZmZlY3RSZWNlaXB0UmVzcG9uc2VIABJLChRvcGVuX2FwaV9kZXNjcmlwdGlvbhgdIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5PcGVuQXBpRGVzY3JpcHRpb25SZXNwb25zZUgAElcKGmluc3RhbGxlZF9sYXdfZGVjbGFyYXRpb25zGB4gASgLMjEubm9tb3Mua2VybmVsLnYxLkluc3RhbGxlZExhd0RlY2xhcmF0aW9uc1Jlc3BvbnNlSAASSwoYYXBwbGljYXRpb25fcmVzdWx0X2RlbHRhGB8gASgLMicubm9tb3Mua2VybmVsLnYxLkFwcGxpY2F0aW9uUmVzdWx0RGVsdGFIABJJChNyZXNvbHZlX2RvbWFpbl9wbGFuGCQgASgLMioubm9tb3Mua2VybmVsLnYxLlJlc29sdmVEb21haW5QbGFuUmVzcG9uc2VIABJJChh2ZXJpZnlfY2hhaW5fZGlhZ25vc3RpY3MYFCABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcxIcCg9yZXN1bHRfZnJvbnRpZXIYICABKAlIAYgBARJCChJmdWxsX3Jlc3VsdF9yZWFzb24YISABKA4yIS5ub21vcy5rZXJuZWwudjEuRnVsbFJlc3VsdFJlYXNvbkgCiAEBEkMKE3Jlc3VsdF9kZXBlbmRlbmNpZXMYIiABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVhZERlcGVuZGVuY2llc0gDiAEBEkAKEXJlYWRfaW5kZXhfYmVoaW5kGCMgASgLMiAubm9tb3Mua2VybmVsLnYxLlJlYWRJbmRleEJlaGluZEgEiAEBQggKBnJlc3VsdEISChBfcmVzdWx0X2Zyb250aWVyQhUKE19mdWxsX3Jlc3VsdF9yZWFzb25CFgoUX3Jlc3VsdF9kZXBlbmRlbmNpZXNCFAoSX3JlYWRfaW5kZXhfYmVoaW5kIoABCg9SZWFkSW5kZXhCZWhpbmQSEQoJd29ya3NwYWNlGAEgASgJEg4KBmJyYW5jaBgCIAEoCRIXCg9zZXJ2ZWRfZnJvbnRpZXIYAyABKAkSGgoScmVxdWVzdGVkX2Zyb250aWVyGAQgASgJEhUKDXN1Y2Nlc3Nvcl9sYXcYBSABKAgiVAoQUmVhZERlcGVuZGVuY2llcxIXCg9hZ2dyZWdhdGVfdHlwZXMYASADKAkSFgoOcmVhZHNfYXJjaGl2ZXMYAiABKAgSDwoHcmVhZF9hdBgDIAEoCSKCAQoWQXBwbGljYXRpb25SZXN1bHREZWx0YRIVCg1iYXNlX2Zyb250aWVyGAEgASgJEhAKCGZyb250aWVyGAIgASgJEioKDGNoYW5nZWRfcm93cxgDIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSEwoLcmVtb3ZlZF9pZHMYBCADKAkiMwoaT3BlbkFwaURlc2NyaXB0aW9uUmVzcG9uc2USFQoNZG9jdW1lbnRfanNvbhgBIAEoCSJxChtJbnRlcmZhY2VDb21wYXRpYmlsaXR5UXVlcnkSHwoXYXBwbGljYXRpb25fbWF0cml4X3VzZGEYASABKAwSMQoPY2FuZGlkYXRlX3VuaXRzGAIgAygLMhgubm9tb3Mua2VybmVsLnYxLkxhd1VuaXQisAIKFkludGVyZmFjZU1lbWJlclZlcmRpY3QSDgoGZG9tYWluGAEgASgJEjIKBGtpbmQYAiABKA4yJC5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlTWVtYmVyS2luZBIOCgZtZW1iZXIYAyABKAkSEgoFZmllbGQYBCABKAlIAIgBARI9CgZzdGF0dXMYBSABKA4yLS5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlQ29tcGF0aWJpbGl0eVN0YXR1cxI9CgZyZWFzb24YBiABKA4yLS5ub21vcy5rZXJuZWwudjEuSW50ZXJmYWNlQ29tcGF0aWJpbGl0eVJlYXNvbhIXCgpkaWFnbm9zdGljGAcgASgJSAGIAQFCCAoGX2ZpZWxkQg0KC19kaWFnbm9zdGljIsIBCh5JbnRlcmZhY2VDb21wYXRpYmlsaXR5UmVzcG9uc2USEgoKY29tcGF0aWJsZRgBIAEoCBI4CgdtZW1iZXJzGAIgAygLMicubm9tb3Mua2VybmVsLnYxLkludGVyZmFjZU1lbWJlclZlcmRpY3QSGgoSd29ya3NwYWNlX2Zyb250aWVyGAMgASgJEhYKDmNhbmRpZGF0ZV9oYXNoGAQgASgJEh4KFmVmZmVjdGl2ZV9sYXdfaWRlbnRpdHkYBSABKAki/wEKFFdhcm1Qcm9ncmVzc1Jlc3BvbnNlEhsKE21haW50ZW5hbmNlX3BlbmRpbmcYASABKAgSJAoXcHJlcGFyZWRfY29tbWFuZF9kb21haW4YAiABKAlIAIgBARIlChhwcmVwYXJlZF9jb21tYW5kX3BhY2thZ2UYAyABKAlIAYgBARImChlwcmVwYXJlZF9jb21tYW5kX3NlbGVjdG9yGAQgASgJSAKIAQFCGgoYX3ByZXBhcmVkX2NvbW1hbmRfZG9tYWluQhsKGV9wcmVwYXJlZF9jb21tYW5kX3BhY2thZ2VCHAoaX3ByZXBhcmVkX2NvbW1hbmRfc2VsZWN0b3IibAoQUmVhZEluZGV4UGVuZGluZxIRCgl3b3Jrc3BhY2UYASABKAkSDgoGYnJhbmNoGAIgASgJEhoKEnJlcXVlc3RlZF9mcm9udGllchgDIAEoCRIZChFsYXN0X3JlYWR5X2Fic2VudBgEIAEoCSLoAgoXTWFpbnRlbmFuY2VRdWFudHVtUXVlcnkSHQoQcmVxdWVzdGVkX2RvbWFpbhgBIAEoCUgAiAEBEh4KEXJlcXVlc3RlZF9wYWNrYWdlGAIgASgJSAGIAQESIAoTcmVxdWVzdGVkX2RpcmVjdGl2ZRgDIAEoCUgCiAEBEhcKD2xvY2FsX3JlYWRfb25seRgEIAEoCBIcChRtYWludGFpbl9naXRfY3VzdG9keRgFIAEoCBIXCg9yZWFkX2luZGV4X29ubHkYBiABKAgSJAocbWFpbnRhaW5fYWRkcmVzc2VkX2Zyb250aWVycxgHIAEoCBIYChBmbHVzaF9kdXJhYmlsaXR5GAggASgIEhkKEWxvY2FsX3dyaXRlX2J1cnN0GAkgASgIQhMKEV9yZXF1ZXN0ZWRfZG9tYWluQhQKEl9yZXF1ZXN0ZWRfcGFja2FnZUIWChRfcmVxdWVzdGVkX2RpcmVjdGl2ZSKiBAoaTWFpbnRlbmFuY2VRdWFudHVtUmVzcG9uc2USEQoJd29ya3NwYWNlGAEgASgJEhsKE21haW50ZW5hbmNlX3BlbmRpbmcYAiABKAgSMAoFcGhhc2UYAyABKA4yIS5ub21vcy5rZXJuZWwudjEuTWFpbnRlbmFuY2VQaGFzZRIZCgxnaXRfZnJvbnRpZXIYBCABKAlIAIgBARIaCg1yZWFkX2Zyb250aWVyGAUgASgJSAGIAQESHAoPc3FsaXRlX2Zyb250aWVyGAYgASgJSAKIAQESEgoKd29ya191bml0cxgHIAEoBBIWCg5lbGFwc2VkX21pY3JvcxgIIAEoBBIkChdwcmVwYXJlZF9jb21tYW5kX2RvbWFpbhgJIAEoCUgDiAEBEiUKGHByZXBhcmVkX2NvbW1hbmRfcGFja2FnZRgKIAEoCUgEiAEBEiYKGXByZXBhcmVkX2NvbW1hbmRfc2VsZWN0b3IYCyABKAlIBYgBARIeChZsb29zZV9jdXN0b2R5X3ByZXNzdXJlGAwgASgIQg8KDV9naXRfZnJvbnRpZXJCEAoOX3JlYWRfZnJvbnRpZXJCEgoQX3NxbGl0ZV9mcm9udGllckIaChhfcHJlcGFyZWRfY29tbWFuZF9kb21haW5CGwoZX3ByZXBhcmVkX2NvbW1hbmRfcGFja2FnZUIcChpfcHJlcGFyZWRfY29tbWFuZF9zZWxlY3RvciJICg1Pc2dpQXR0cmlidXRlEgwKBG5hbWUYASABKAkSDQoFdmFsdWUYAiABKAkSEQoEdHlwZRgDIAEoCUgAiAEBQgcKBV90eXBlIiwKDU9zZ2lEaXJlY3RpdmUSDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKLAQoOT3NnaUNhcGFiaWxpdHkSEQoJbmFtZXNwYWNlGAEgASgJEjIKCmF0dHJpYnV0ZXMYAiADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaUF0dHJpYnV0ZRIyCgpkaXJlY3RpdmVzGAMgAygLMh4ubm9tb3Mua2VybmVsLnYxLk9zZ2lEaXJlY3RpdmUijAEKD09zZ2lSZXF1aXJlbWVudBIRCgluYW1lc3BhY2UYASABKAkSMgoKYXR0cmlidXRlcxgCIAMoCzIeLm5vbW9zLmtlcm5lbC52MS5Pc2dpQXR0cmlidXRlEjIKCmRpcmVjdGl2ZXMYAyADKAsyHi5ub21vcy5rZXJuZWwudjEuT3NnaURpcmVjdGl2ZSKaAQoUT3NnaVJlc291cmNlUmVzcG9uc2USEwoLc291cmNlX3VzZGEYASABKAwSNQoMY2FwYWJpbGl0aWVzGAIgAygLMh8ubm9tb3Mua2VybmVsLnYxLk9zZ2lDYXBhYmlsaXR5EjYKDHJlcXVpcmVtZW50cxgDIAMoCzIgLm5vbW9zLmtlcm5lbC52MS5Pc2dpUmVxdWlyZW1lbnQi5wEKE1ZlcmlmeUNoYWluU3RlcFNwYW4SDQoFaW5kZXgYASABKAQSEgoKY29tbWl0X29pZBgCIAEoCRIOCgZkb21haW4YAyABKAkSEQoJZGlyZWN0aXZlGAQgASgJEhAKCHRvdGFsX3VzGAUgASgEEjYKBnBoYXNlcxgGIAEoCzImLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBQaGFzZXMSQAoOZW5naW5lX3RpbWluZ3MYByADKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5FbmdpbmVUaW1pbmcimAIKFVZlcmlmeUNoYWluU3RlcFBoYXNlcxIeChZydW50aW1lX2xhd19yZWZyZXNoX3VzGAEgASgEEhMKC21hbmlmZXN0X3VzGAIgASgEEhkKEWxhd19yZXNvbHV0aW9uX3VzGAMgASgEEh0KFW1hbmFnZWRfdHJhbnNpdGlvbl91cxgEIAEoBBIUCgxwcmluY2lwYWxfdXMYBSABKAQSFAoMZXZvbHV0aW9uX3VzGAYgASgEEhoKEmNvbG9jYXRlZF9yZWFkc191cxgHIAEoBBIhChl0eXBlZF9pbnN0YWxsX3ZlcmlmaWVyX3VzGAggASgEEhQKDGFkbWlzc2lvbl91cxgJIAEoBBIPCgdmb2xkX3VzGAogASgEItoFChZWZXJpZnlDaGFpbkRpYWdub3N0aWNzEi4KBHdhbGsYASABKA4yIC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5XYWxrEhAKCHRvdGFsX3VzGAIgASgEEhsKE3JlZmVyZW5jZV9sb29rdXBfdXMYAyABKAQSGgoScmVwb3NpdG9yeV9vcGVuX3VzGAQgASgEEhUKDWNoYWluX3JlYWRfdXMYBSABKAQSFgoOZW5naW5lX2luaXRfdXMYBiABKAQSGAoQdGltZWxpbmVfcmVhZF91cxgHIAEoBBIYChBsYXdfaHlkcmF0aW9uX3VzGAggASgEEhsKE3JlY292ZXJ5X3ByZXNjYW5fdXMYCSABKAQSGAoQZm9sZF9mcm9udGllcl91cxgKIAEoBBIzCgVzdGVwcxgLIAMoCzIkLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpblN0ZXBTcGFuEkAKDmVuZ2luZV90aW1pbmdzGAwgAygLMigubm9tb3Mua2VybmVsLnYxLlZlcmlmeUNoYWluRW5naW5lVGltaW5nEk0KFWxhd19oeWRyYXRpb25fdGltaW5ncxgNIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxIZChFsYXdfY2xvc3VyZV9jb3VudBgOIAEoBBIeChZsYXdfY2xvc3VyZV9jYWNoZV9oaXRzGA8gASgEEiAKGGxhd19jbG9zdXJlX2NhY2hlX21pc3NlcxgQIAEoBBISCgpzdGVwX2NvdW50GBEgASgEEhUKDXN0ZXBfdG90YWxfdXMYEiABKAQSQQoRc3RlcF9waGFzZV90b3RhbHMYEyABKAsyJi5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5TdGVwUGhhc2VzEhoKEm9taXR0ZWRfc3RlcF9jb3VudBgUIAEoBCI6ChdWZXJpZnlDaGFpbkVuZ2luZVRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCJACh1WZXJpZnlDaGFpbkxhd0h5ZHJhdGlvblRpbWluZxINCgVwaGFzZRgBIAEoCRIQCgh0b3RhbF91cxgCIAEoBCKrAQoUSHR0cHNFeGVjdXRpb25Qb2xpY3kSPAoJcGxhY2VtZW50GAEgASgOMikubm9tb3Mua2VybmVsLnYxLkVmZmVjdEV4ZWN1dGlvblBsYWNlbWVudBJACgtjYXJkaW5hbGl0eRgCIAEoDjIrLm5vbW9zLmtlcm5lbC52MS5FZmZlY3RFeGVjdXRpb25DYXJkaW5hbGl0eRITCgtsYXdfY2xvc3VyZRgDIAEoCSJbChJIdHRwc091dGJvdW5kUm91dGUSCwoDdXJsGAEgASgJEjgKCWV4ZWN1dGlvbhgCIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5IdHRwc0V4ZWN1dGlvblBvbGljeSIrChZXb3Jrc3BhY2VPdXRib3VuZFJvdXRlEhEKCXdvcmtzcGFjZRgBIAEoCSKFAgoVQ2FycmllZFdvcmtzcGFjZU9mZmVyEjAKBnNvdXJjZRgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSFQoNc291cmNlX2NvbW1pdBgCIAEoCRIZChFzb3VyY2Vfb2ZmZXJfcGF0aBgDIAEoCRIcChRzb3VyY2VfZXZpZGVuY2VfcGFjaxgFIAEoDBIjChthZG1pc3Npb25fY2hlY2twb2ludF9zZWNyZXQYBiABKAwSFQoNZWZmZWN0X2RpZ2VzdBgHIAEoCRIgChhzb3VyY2Vfd29ya3NwYWNlX2dlbmVzaXMYCCABKAlKBAgEEAVSBnRhcmdldCLMBAoNT3V0Ym91bmRPZmZlchIKCgJpZBgBIAEoCRIXCgtkZXN0aW5hdGlvbhgCIAEoCUICGAESFAoMc2VhbGVkX29mZmVyGAMgASgMEhQKDGNvbnRlbnRfdHlwZRgEIAEoCRIYChBzb3VyY2Vfd29ya3NwYWNlGAUgASgJEhQKDGN1c3RvZHlfaGVhZBgGIAEoCRIXCg9jYXVzZWRfYnlfb2ZmZXIYByABKAkSGwoTc2NoZWR1bGVkX2F0X21pbGxpcxgIIAEoBBIaChJkZWFkbGluZV9hdF9taWxsaXMYCSABKAQSFAoMY3VzdG9keV9wYXRoGAogASgJEhMKC2N1c3RvZHlfb2lkGAsgASgJEhQKDGRlbGl2ZXJ5X3JlZhgMIAEoCRIVCg1vYmxpZ2F0aW9uX2lkGA0gASgJEjoKC2h0dHBzX3JvdXRlGA4gASgLMiMubm9tb3Mua2VybmVsLnYxLkh0dHBzT3V0Ym91bmRSb3V0ZUgAEkIKD3dvcmtzcGFjZV9yb3V0ZRgPIAEoCzInLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VPdXRib3VuZFJvdXRlSAASFQoNc291cmNlX2NvbW1pdBgQIAEoCRIcChRzb3VyY2VfZXZpZGVuY2VfcGFjaxgRIAEoDBIZChFzb3VyY2Vfb2ZmZXJfcGF0aBgSIAEoCRIVCg1lZmZlY3RfZGlnZXN0GBMgASgJEiAKGHNvdXJjZV93b3Jrc3BhY2VfZ2VuZXNpcxgUIAEoCUIHCgVyb3V0ZSLuAQoOT3V0Ym94UmVzcG9uc2USLgoGb2ZmZXJzGAEgAygLMh4ubm9tb3Mua2VybmVsLnYxLk91dGJvdW5kT2ZmZXISHwoSbmV4dF9kdWVfYXRfbWlsbGlzGAIgASgESACIAQESLQoHZW50cmllcxgDIAMoCzIcLm5vbW9zLmtlcm5lbC52MS5PdXRib3hFbnRyeRIUCgx3b3JrX3BlbmRpbmcYBCABKAgSFQoNZW50cmllc190b3RhbBgFIAEoDRIYChBlbnRyaWVzX3ByZXBhcmVkGAYgASgNQhUKE19uZXh0X2R1ZV9hdF9taWxsaXMivQEKC091dGJveEVudHJ5EgoKAmlkGAEgASgJEhkKEXNvdXJjZV9vZmZlcl9wYXRoGAIgASgJEjoKC2h0dHBzX3JvdXRlGAMgASgLMiMubm9tb3Mua2VybmVsLnYxLkh0dHBzT3V0Ym91bmRSb3V0ZUgAEkIKD3dvcmtzcGFjZV9yb3V0ZRgEIAEoCzInLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VPdXRib3VuZFJvdXRlSABCBwoFcm91dGUilAEKFFByZXBhcmVPdXRib3VuZE9mZmVyEhgKEHRhcmdldF93b3Jrc3BhY2UYASABKAkSGgoNc291cmNlX2NvbW1pdBgCIAEoCUgAiAEBEh4KEXNvdXJjZV9vZmZlcl9wYXRoGAMgASgJSAGIAQFCEAoOX3NvdXJjZV9jb21taXRCFAoSX3NvdXJjZV9vZmZlcl9wYXRoIokFCgxTeW5jUmVzcG9uc2USEAoIYWRtaXR0ZWQYAiABKAgSDAoEaGVhZBgDIAEoCRIWCg5jYW5kaWRhdGVfaGVhZBgEIAEoCRIcChRhZG1pdHRlZF9yZW1vdGVfaGVhZBgFIAEoCRIcChRyZXBsYXllZF9yZW1vdGVfaGVhZBgGIAEoCRI8Cg9hZG1pdHRlZF9yZW1vdGUYByADKAsyIy5ub21vcy5rZXJuZWwudjEuU3luY0FkbWl0dGVkSW50ZW50EjwKFXJlbW90ZV9iaXJ0aF9vdXRjb21lcxgIIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUSOQoOcmVtb3RlX3JlZnVzYWwYCSABKAsyHC5ub21vcy5rZXJuZWwudjEuU3luY1JlZnVzYWxIAIgBARI7Cg5yZXBsYXllZF9sb2NhbBgKIAMoCzIjLm5vbW9zLmtlcm5lbC52MS5TeW5jUmVwbGF5ZWRJbnRlbnQSIAoYc2tpcHBlZF9sb2NhbF9pbnRlbnRfaWRzGAsgAygJEjkKDXJlZnVzZWRfbG9jYWwYDCADKAsyIi5ub21vcy5rZXJuZWwudjEuU3luY1JlZnVzZWRJbnRlbnQSRwoUY3VzdG9keV9kaXNhZ3JlZW1lbnQYDSABKAsyJC5ub21vcy5rZXJuZWwudjEuQ3VzdG9keURpc2FncmVlbWVudEgBiAEBEhkKEXBhcmtlZF9sb2NhbF9yZWZzGA4gAygJEhYKDnJlcGxheV9wZW5kaW5nGA8gASgIQhEKD19yZW1vdGVfcmVmdXNhbEIXChVfY3VzdG9keV9kaXNhZ3JlZW1lbnRKBAgBEAJSBnJlc3VsdCJRChNDdXN0b2R5RGlzYWdyZWVtZW50EhIKCmxvY2FsX2hlYWQYASABKAkSFgoOY2FuZGlkYXRlX2hlYWQYAiABKAkSDgoGcmVhc29uGAMgASgJIk8KElN5bmNBZG1pdHRlZEludGVudBIRCglpbnRlbnRfaWQYASABKAkSGAoQY2FuZGlkYXRlX2NvbW1pdBgCIAEoCRIMCgRoZWFkGAMgASgJImwKElN5bmNSZXBsYXllZEludGVudBIRCglpbnRlbnRfaWQYASABKAkSDAoEaGVhZBgCIAEoCRI1Cg5iaXJ0aF9vdXRjb21lcxgDIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5CaXJ0aE91dGNvbWUioQEKC1N5bmNSZWZ1c2FsEhYKCWludGVudF9pZBgBIAEoCUgAiAEBEg4KBnJlYXNvbhgCIAEoCRIRCgRjb2RlGAMgASgJSAGIAQESNAoHcmVmdXNhbBgEIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5LZXJuZWxSZWZ1c2FsSAKIAQFCDAoKX2ludGVudF9pZEIHCgVfY29kZUIKCghfcmVmdXNhbCKNAQoRU3luY1JlZnVzZWRJbnRlbnQSEQoJaW50ZW50X2lkGAEgASgJEg4KBnJlYXNvbhgCIAEoCRITCgtjaGFuZ2VfdXNkYRgDIAEoDBI0CgdyZWZ1c2FsGAQgASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxIAIgBAUIKCghfcmVmdXNhbCJCCg9Xb3Jrc3BhY2VUYXJnZXQSDAoEcmVwbxgBIAEoCRIRCgl3b3Jrc3BhY2UYAiABKAkSDgoGYnJhbmNoGAMgASgJIk4KC09wZW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDQoFc3BhbnMYAiABKAgiDgoMR2VuZXNpc09mZmVyIqMBCg1EaXJlY3RpdmVDYWxsEg4KBmRvbWFpbhgBIAEoCRIRCglkaXJlY3RpdmUYAiABKAkSJwoJb3BlcmF0aW9uGAUgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRIWCg5hcmd1bWVudHNfanNvbhgGIAEoCUoECAMQBEoECAQQBVIJY2FsbF91c2RhUgdwYXlsb2FkUg5sZWdhY3lfcGF5bG9hZCLWAgoQQXV0aG9yaW5nT3B0aW9ucxINCgVhY3RvchgBIAEoCRISCgphdXRoX3Rva2VuGAIgASgMEhUKDWF1dGhvcl9zZWNyZXQYAyABKAwSHQoQdmFsaWRfZnJvbV9lcG9jaBgEIAEoBEgAiAEBEh8KEnByaW5jaXBhbF92ZXJpZmllZBgFIAEoCEgBiAEBEgsKA3JuZxgGIAMoARIYChBkZWZlcl9wcm9qZWN0aW9uGAcgASgIEg0KBXNwYW5zGAggASgIEg8KB2RyeV9ydW4YCSABKAgSEAoIc2VxdWVuY2UYCiABKAQSLQoFY2xvY2sYCyABKAsyHi5ub21vcy5rZXJuZWwudjEuQ2FwdHVyZWRDbG9jaxIUCgxwcmVwYXJlX29ubHkYDCABKAhCEwoRX3ZhbGlkX2Zyb21fZXBvY2hCFQoTX3ByaW5jaXBhbF92ZXJpZmllZCJKCg1DYXB0dXJlZENsb2NrEhcKD3BoeXNpY2FsX21pbGxpcxgBIAEoBBIPCgdsb2dpY2FsGAIgASgNEg8KB3JlcGxpY2EYAyABKAQiwwMKEEJpcnRoQ2VydGlmaWNhdGUSDQoFY2hpbGQYASABKAkSDwoHZm91bmRlchgCIAEoCRIQCgh2ZXJpZmllZBgDIAEoCBISCgpwYXJlbnRfa2V5GAQgASgMEhEKCXBhcmVudF9pZBgFIAEoCRINCgVlcG9jaBgGIAEoAxIRCglzaWduYXR1cmUYByABKAwSGQoMdmVyaWZpZWRfdmlhGAggASgJSACIAQESFgoJaWRwX3Rva2VuGAkgASgJSAGIAQESGwoOY2FwdHVyZWRfY2xvY2sYCiABKANIAogBARIhChRhdXRoX3Byb3ZpZGVyX2lzc3VlchgLIAEoCUgDiAEBEh8KEmF1dGhfcHJvdmlkZXJfandrcxgMIAEoCUgEiAEBEiMKFmF1dGhfcHJvdmlkZXJfYXVkaWVuY2UYDSABKAlIBYgBAUIPCg1fdmVyaWZpZWRfdmlhQgwKCl9pZHBfdG9rZW5CEQoPX2NhcHR1cmVkX2Nsb2NrQhcKFV9hdXRoX3Byb3ZpZGVyX2lzc3VlckIVChNfYXV0aF9wcm92aWRlcl9qd2tzQhkKF19hdXRoX3Byb3ZpZGVyX2F1ZGllbmNlImwKG1NpZ25CaXJ0aENlcnRpZmljYXRlUmVxdWVzdBI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlEhUKDXNpZ25lcl9zZWNyZXQYAiABKAwiVgocU2lnbkJpcnRoQ2VydGlmaWNhdGVSZXNwb25zZRI2CgtjZXJ0aWZpY2F0ZRgBIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5CaXJ0aENlcnRpZmljYXRlIs8DChRNb2RlbExpZmVjeWNsZUludGVudBI7CglvcGVyYXRpb24YASABKA4yKC5ub21vcy5rZXJuZWwudjEuTW9kZWxMaWZlY3ljbGVPcGVyYXRpb24SFAoMaW5zdGFsbGVkX2J5GAIgASgJEhcKCnN1cGVyc2VkZXMYAyABKAlIAIgBARJECgp0cmFuc2l0aW9uGAQgASgLMisubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlSAGIAQESFQoIcmVwbGFjZXMYBSABKAlIAogBARIeChFhY2NlcHRhbmNlX3JlYXNvbhgGIAEoCUgDiAEBEhkKDGxhd19pZGVudGl0eRgHIAEoCUgEiAEBEksKEWRvbWFpbl90cmFuc2l0aW9uGAggASgLMisubm9tb3Mua2VybmVsLnYxLkRvbWFpblRyYW5zaXRpb25BY3RpdmF0aW9uSAWIAQFCDQoLX3N1cGVyc2VkZXNCDQoLX3RyYW5zaXRpb25CCwoJX3JlcGxhY2VzQhQKEl9hY2NlcHRhbmNlX3JlYXNvbkIPCg1fbGF3X2lkZW50aXR5QhQKEl9kb21haW5fdHJhbnNpdGlvbiJwCgpEb21haW5QbGFuEi4KB2FjdGlvbnMYASADKAsyHS5ub21vcy5rZXJuZWwudjEuRG9tYWluQWN0aW9uEjIKB3N1cHBvcnQYAiADKAsyIS5ub21vcy5rZXJuZWwudjEuRG9tYWluU3VwcG9ydFBpbiJoCgxEb21haW5BY3Rpb24SDgoGZG9tYWluGAEgASgJEhUKDWV4cGVjdGVkX3VuaXQYAiABKAkSEwoLdGFyZ2V0X3VuaXQYAyABKAkSEgoFZ3JvdXAYBCABKAlIAIgBAUIICgZfZ3JvdXAiQQoQRG9tYWluU3VwcG9ydFBpbhINCgVncm91cBgBIAEoCRILCgNrZXkYAiABKAkSEQoJdW5pdF9oYXNoGAMgASgJIpICChhSZXNvbHZlRG9tYWluUGxhblJlcXVlc3QSKQoEcGxhbhgBIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Eb21haW5QbGFuEg8KB2F0X2hhc2gYAiABKAkSFAoManVkZ2Vfc3RhZ2VkGAMgASgIEiEKGWFja25vd2xlZGdlbWVudF9wcmluY2lwYWwYBCABKAkSDwoHcXVhbGlmeRgFIAEoCBI9Cgljb25zdW1lcnMYBiADKAsyKi5ub21vcy5rZXJuZWwudjEuRG9tYWluQ29uc3VtZXJSZXF1aXJlbWVudBIxCg9hdmFpbGFibGVfdW5pdHMYByADKAsyGC5ub21vcy5rZXJuZWwudjEuTGF3VW5pdCJKChlEb21haW5Db25zdW1lclJlcXVpcmVtZW50EgwKBG5hbWUYASABKAkSHwoXYXBwbGljYXRpb25fbWF0cml4X3VzZGEYAiABKAwiSgoVRG9tYWluQ29uc3VtZXJWZXJkaWN0EgwKBG5hbWUYASABKAkSEgoKY29tcGF0aWJsZRgCIAEoCBIPCgdmYWlsaW5nGAMgAygJImsKE1Jlc29sdmVkRG9tYWluR3JvdXASDQoFZ3JvdXAYASABKAkSFgoOY2FuZGlkYXRlX2hhc2gYAiABKAkSLQoFdW5pdHMYAyADKAsyHi5ub21vcy5rZXJuZWwudjEuRG9tYWluVW5pdFBpbiIvCg1Eb21haW5Vbml0UGluEgsKA2tleRgBIAEoCRIRCgl1bml0X2hhc2gYAiABKAkitAMKGVJlc29sdmVEb21haW5QbGFuUmVzcG9uc2USDwoHYXRfaGFzaBgBIAEoCRIVCg1hdF9zdGF0ZV9yb290GAIgASgJEjQKBmdyb3VwcxgDIAMoCzIkLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlZERvbWFpbkdyb3VwEhwKFHJldGlyZV9pbnN0YWxsYXRpb25zGAQgAygJEjgKEHNlbGVjdGVkX2RvbWFpbnMYBSADKAsyHi5ub21vcy5rZXJuZWwudjEuRG9tYWluVW5pdFBpbhISCgVyZWFkeRgGIAEoCEgAiAEBEhIKCnZpb2xhdGlvbnMYByADKAkSOQoJY29uc3VtZXJzGAggAygLMiYubm9tb3Mua2VybmVsLnYxLkRvbWFpbkNvbnN1bWVyVmVyZGljdBI5Cgl1bml0X3NldHMYCSADKAsyJi5ub21vcy5rZXJuZWwudjEuTGF3UHJlcGFyYXRpb25Vbml0U2V0EhkKEWtlcm5lbF9nZW5lcmF0aW9uGAogASgJEh4KFmVmZmVjdGl2ZV9sYXdfaWRlbnRpdHkYCyABKAlCCAoGX3JlYWR5IoUBChpEb21haW5UcmFuc2l0aW9uQWN0aXZhdGlvbhIpCgRwbGFuGAEgASgLMhsubm9tb3Mua2VybmVsLnYxLkRvbWFpblBsYW4SPAoIcmVzb2x2ZWQYAiABKAsyKi5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZURvbWFpblBsYW5SZXNwb25zZSI7Ch9JZGVudGl0eVByb3ZpZGVyV2l0bmVzc0Fkb3B0aW9uEhgKEHNvdXJjZV93b3Jrc3BhY2UYASABKAki5wcKDE9mZmVyUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0Ei4KBGNhbGwYAiABKAsyHi5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQ2FsbEgAEhwKEnNlYWxlZF9jaGFuZ2VfdXNkYRgHIAEoDEgAEkAKD21vZGVsX2xpZmVjeWNsZRgMIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5Nb2RlbExpZmVjeWNsZUludGVudEgAEl4KImlkZW50aXR5X3Byb3ZpZGVyX3dpdG5lc3NfYWRvcHRpb24YDSABKAsyMC5ub21vcy5rZXJuZWwudjEuSWRlbnRpdHlQcm92aWRlcldpdG5lc3NBZG9wdGlvbkgAEjAKB2dlbmVzaXMYDiABKAsyHS5ub21vcy5rZXJuZWwudjEuR2VuZXNpc09mZmVySAASSQoXY2FycmllZF93b3Jrc3BhY2Vfb2ZmZXIYDyABKAsyJi5ub21vcy5rZXJuZWwudjEuQ2FycmllZFdvcmtzcGFjZU9mZmVySAASNAoJcGxhY2VtZW50GBAgASgLMh8ubm9tb3Mua2VybmVsLnYxLlBsYWNlbWVudE9mZmVySAASRwoWZGV0YWNoZWRfc2lnbmVkX2NoYW5nZRgSIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5EZXRhY2hlZFNpZ25lZENoYW5nZUgAEjQKCWF1dGhvcmluZxgDIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpbmdPcHRpb25zEhAKCGxhd191c2R6GAQgASgMEjMKDGF0dGVzdGF0aW9ucxgFIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5BdHRlc3RlZFJlYWQSPQoSY29uZmxpY3Rfc25hcHNob3RzGAYgAygLMiEubm9tb3Mua2VybmVsLnYxLkNvbmZsaWN0U25hcHNob3QSGgoSZXhlY3V0aW9uX2xhd191c2R6GAggASgMEiAKE2NvbnRyb2xsZXJfbGF3X2hhc2gYCSABKAlIAYgBARIdChBjYW5kaWRhdGVfY29tbWl0GAogASgJSAKIAQESPAoRYmlydGhfY2VydGlmaWNhdGUYCyABKAsyIS5ub21vcy5rZXJuZWwudjEuQmlydGhDZXJ0aWZpY2F0ZRIrCglsYXdfdW5pdHMYESADKAsyGC5ub21vcy5rZXJuZWwudjEuTGF3VW5pdEIICgZpbnRlbnRCFgoUX2NvbnRyb2xsZXJfbGF3X2hhc2hCEwoRX2NhbmRpZGF0ZV9jb21taXQiNgoHTGF3VW5pdBIrCgVmaWxlcxgBIAMoCzIcLm5vbW9zLmtlcm5lbC52MS5MYXdVbml0RmlsZSIsCgtMYXdVbml0RmlsZRIMCgRwYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAwixQEKDEF0dGVzdGVkUmVhZBIQCghxdWVyeV9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSKwoGcmVzdWx0GAMgASgLMhsubm9tb3Mua2VybmVsLnYxLk5vbW9zVmFsdWUSMgoIZXZpZGVuY2UYBSABKAsyIC5ub21vcy5rZXJuZWwudjEuUmVhZEF0dGVzdGF0aW9uSgQIBBAFUgthdHRlc3RhdGlvbiLVAQoPUmVhZEF0dGVzdGF0aW9uEg8KB3ZlcnNpb24YASABKAMSGAoQc291cmNlX3dvcmtzcGFjZRgCIAEoCRIWCg5zb3VyY2VfZ2VuZXNpcxgDIAEoCRITCgtzb3VyY2VfaGVhZBgEIAEoCRIRCglmb2xkX3Jvb3QYBSABKAkSFAoMc291cmNlX2Vwb2NoGAYgASgDEhoKEmF0dGVzdGVkX2F0X21pbGxpcxgHIAEoAxISCgpwdWJsaWNfa2V5GAggASgMEhEKCXNpZ25hdHVyZRgJIAEoDCJ1ChBDb25mbGljdFNuYXBzaG90EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhQKDGFnZ3JlZ2F0ZV9pZBgCIAEoCRINCgVmaWVsZBgDIAEoCRIVCg10YXJnZXRfc2NoZW1hGAQgASgJEg0KBXRva2VuGAUgASgJIvQPCgxRdWVyeVJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIyCglhdXRob3JpdHkYAiABKAsyHy5ub21vcy5rZXJuZWwudjEuUXVlcnlBdXRob3JpdHkSDQoFc3BhbnMYAyABKAgSOQoNcmVzdWx0X2Zvcm1hdBgEIAEoDjIiLm5vbW9zLmtlcm5lbC52MS5RdWVyeVJlc3VsdEZvcm1hdBIYChBzZXJ2ZV9sYXN0X3JlYWR5GAUgASgIEioKBHJvd3MYCiABKAsyGi5ub21vcy5rZXJuZWwudjEuUm93c1F1ZXJ5SAASKgoEcGFnZRgLIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5QYWdlUXVlcnlIABIrCgVieV9pZBgMIAEoCzIaLm5vbW9zLmtlcm5lbC52MS5CeUlkUXVlcnlIABI5CgxyZXNvbHZlX3JlZnMYDSABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZnNRdWVyeUgAEkUKEnJlZmVyZW5jZV92ZXJzaW9ucxgOIAEoCzInLm5vbW9zLmtlcm5lbC52MS5SZWZlcmVuY2VWZXJzaW9uc1F1ZXJ5SAASLAoFY291bnQYDyABKAsyGy5ub21vcy5rZXJuZWwudjEuVGFsbHlRdWVyeUgAEioKA3N1bRgQIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5UYWxseVF1ZXJ5SAASMAoHc3BhdGlhbBgRIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5TcGF0aWFsUXVlcnlIABIsCgVuYW1lZBgSIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5OYW1lZFF1ZXJ5SAASSQoTYXV0aG9yaXphdGlvbl9jaGVjaxgTIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ2hlY2tSZXF1ZXN0SAASSwoUYXV0aG9yaXphdGlvbl9leHBhbmQYFCABKAsyKy5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkV4cGFuZFJlcXVlc3RIABJJChNmcm9udGllcl90cmFuc2l0aW9uGBUgASgLMioubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblJlcXVlc3RIABIvCgdieV90eXBlGBYgASgLMhwubm9tb3Mua2VybmVsLnYxLkJ5VHlwZVF1ZXJ5SAASSAoUb3duZWRfZGV2aWNlX3JlcXVlc3QYFyABKAsyKC5ub21vcy5rZXJuZWwudjEuT3duZWREZXZpY2VSZXF1ZXN0UXVlcnlIABJMChZvd25lZF9wcmVwYXJlX2FwcHJvdmFsGBggASgLMioubm9tb3Mua2VybmVsLnYxLk93bmVkUHJlcGFyZUFwcHJvdmFsUXVlcnlIABJDChFwZW5kaW5nX2NvbmZsaWN0cxgZIAEoCzImLm5vbW9zLmtlcm5lbC52MS5QZW5kaW5nQ29uZmxpY3RzUXVlcnlIABJQChhwZW5kaW5nX2NvbmZsaWN0X3N1bW1hcnkYGiABKAsyLC5ub21vcy5rZXJuZWwudjEuUGVuZGluZ0NvbmZsaWN0U3VtbWFyeVF1ZXJ5SAASTQoWYXV0aGVudGljYXRpb25fcG9zdHVyZRgbIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdXRoZW50aWNhdGlvblBvc3R1cmVRdWVyeUgAEkAKEGNoaWxkX3dvcmtzcGFjZXMYHCABKAsyJC5ub21vcy5rZXJuZWwudjEuQ2hpbGRXb3Jrc3BhY2VRdWVyeUgAElYKFmF1dGhvcmluZ19yZXF1aXJlbWVudHMYHSABKAsyNC5ub21vcy5rZXJuZWwudjEuRGlyZWN0aXZlQXV0aG9yaW5nUmVxdWlyZW1lbnRzUXVlcnlIABJSChlpZGVudGl0eV9wcm92aWRlcl93aXRuZXNzGB4gASgLMi0ubm9tb3Mua2VybmVsLnYxLklkZW50aXR5UHJvdmlkZXJXaXRuZXNzUXVlcnlIABJPChdpbnRlcmZhY2VfY29tcGF0aWJpbGl0eRgfIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5JbnRlcmZhY2VDb21wYXRpYmlsaXR5UXVlcnlIABJHChNtYWludGVuYW5jZV9xdWFudHVtGCAgASgLMigubm9tb3Mua2VybmVsLnYxLk1haW50ZW5hbmNlUXVhbnR1bVF1ZXJ5SAASRAoSZnVsbF9oaXN0b3J5X2F1ZGl0GCEgASgLMiYubm9tb3Mua2VybmVsLnYxLkZ1bGxIaXN0b3J5QXVkaXRRdWVyeUgAElAKGHdvcmtzcGFjZV9lZmZlY3RfcmVjZWlwdBgiIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VFZmZlY3RSZWNlaXB0UXVlcnlIABJUChppbnN0YWxsZWRfbGF3X2RlY2xhcmF0aW9ucxgjIAEoCzIuLm5vbW9zLmtlcm5lbC52MS5JbnN0YWxsZWRMYXdEZWNsYXJhdGlvbnNRdWVyeUgAEkgKE3Jlc29sdmVfZG9tYWluX3BsYW4YJCABKAsyKS5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZURvbWFpblBsYW5SZXF1ZXN0SABCBwoFcXVlcnkiVgobV29ya3NwYWNlRWZmZWN0UmVjZWlwdFF1ZXJ5EiAKGHNvdXJjZV93b3Jrc3BhY2VfZ2VuZXNpcxgBIAEoCRIVCg1lZmZlY3RfZGlnZXN0GAIgASgJIuQBCh5Xb3Jrc3BhY2VFZmZlY3RSZWNlaXB0UmVzcG9uc2USGAoQdGFyZ2V0X3dvcmtzcGFjZRgBIAEoCRIgChh0YXJnZXRfd29ya3NwYWNlX2dlbmVzaXMYAiABKAkSFQoNb2JzZXJ2ZWRfaGVhZBgDIAEoCRIgChhzb3VyY2Vfd29ya3NwYWNlX2dlbmVzaXMYBCABKAkSFQoNZWZmZWN0X2RpZ2VzdBgFIAEoCRIfChJhZG1pdHRlZF9pbnRlbnRfaWQYBiABKAlIAIgBAUIVChNfYWRtaXR0ZWRfaW50ZW50X2lkIhcKFUZ1bGxIaXN0b3J5QXVkaXRRdWVyeSKwAwoYRnVsbEhpc3RvcnlBdWRpdFJlc3BvbnNlEg0KBXZhbGlkGAEgASgIEi4KBHdhbGsYAiABKA4yIC5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5XYWxrEhEKBGhlYWQYAyABKAlIAIgBARIUCgdpbnRlbnRzGAQgASgESAGIAQESGAoLcGxhbnNfcmVydW4YBSABKARIAogBARIcCg9jb250cm9sbGVyX2hhc2gYBiABKAlIA4gBARIZChFpbnN0YWxsZWRfZG9tYWlucxgHIAMoCRISCgVjaGVjaxgIIAEoCUgEiAEBEhUKCGF0X2luZGV4GAkgASgESAWIAQESEgoFZXJyb3IYCiABKAlIBogBARI0CgdyZWZ1c2FsGAsgASgLMh4ubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlZnVzYWxIB4gBAUIHCgVfaGVhZEIKCghfaW50ZW50c0IOCgxfcGxhbnNfcmVydW5CEgoQX2NvbnRyb2xsZXJfaGFzaEIICgZfY2hlY2tCCwoJX2F0X2luZGV4QggKBl9lcnJvckIKCghfcmVmdXNhbCIeChxJZGVudGl0eVByb3ZpZGVyV2l0bmVzc1F1ZXJ5IosCChpJZGVudGl0eVByb3ZpZGVyV2l0bmVzc0tleRIPCgdvcmRpbmFsGAEgASgEEgsKA2t0eRgCIAEoCRIQCgNraWQYAyABKAlIAIgBARIQCgNhbGcYBCABKAlIAYgBARIQCgN1c2UYBSABKAlIAogBARIQCgNjcnYYBiABKAlIA4gBARIOCgF4GAcgASgJSASIAQESDgoBeRgIIAEoCUgFiAEBEg4KAW4YCSABKAlIBogBARIOCgFlGAogASgJSAeIAQESDwoHa2V5X29wcxgLIAMoCUIGCgRfa2lkQgYKBF9hbGdCBgoEX3VzZUIGCgRfY3J2QgQKAl94QgQKAl95QgQKAl9uQgQKAl9lImMKIklkZW50aXR5UHJvdmlkZXJXaXRuZXNzQ2VydGlmaWNhdGUSEwoLa2V5X29yZGluYWwYASABKAQSGwoTY2VydGlmaWNhdGVfb3JkaW5hbBgCIAEoBBILCgNkZXIYAyABKAwixQQKH0lkZW50aXR5UHJvdmlkZXJXaXRuZXNzUmVzcG9uc2USGAoQc291cmNlX3dvcmtzcGFjZRgBIAEoCRIWCg5zb3VyY2VfZ2VuZXNpcxgCIAEoCRITCgtzb3VyY2VfaGVhZBgDIAEoCRINCgVlcG9jaBgEIAEoBBIfChJwcmVkZWNlc3Nvcl9zaGEyNTYYBSABKAxIAIgBARIOCgZpc3N1ZXIYBiABKAkSFQoIYXVkaWVuY2UYByABKAlIAYgBARIXCg9wcmluY2lwYWxfY2xhaW0YCCABKAkSIQoUZGV2aWNlX2JpbmRpbmdfY2xhaW0YCSABKAlIAogBARIeChZyZXF1aXJlX2RldmljZV9iaW5kaW5nGAogASgIEjkKBGtleXMYCyADKAsyKy5ub21vcy5rZXJuZWwudjEuSWRlbnRpdHlQcm92aWRlcldpdG5lc3NLZXkSSQoMY2VydGlmaWNhdGVzGAwgAygLMjMubm9tb3Mua2VybmVsLnYxLklkZW50aXR5UHJvdmlkZXJXaXRuZXNzQ2VydGlmaWNhdGUSFwoPbWF0ZXJpYWxfc2hhMjU2GA0gASgMEjMKDGF0dGVzdGF0aW9ucxgPIAMoCzIdLm5vbW9zLmtlcm5lbC52MS5BdHRlc3RlZFJlYWRCFQoTX3ByZWRlY2Vzc29yX3NoYTI1NkILCglfYXVkaWVuY2VCFwoVX2RldmljZV9iaW5kaW5nX2NsYWltSgQIDhAPUhFzb3VyY2VfcHJvb2ZfdXNkYSIVChNDaGlsZFdvcmtzcGFjZVF1ZXJ5IpABChlDaGlsZFdvcmtzcGFjZVF1ZXJ5UmVjb3JkEhEKCXdvcmtzcGFjZRgBIAEoCRI+CgZzdGF0dXMYAiABKA4yLi5ub21vcy5rZXJuZWwudjEuQ2hpbGRXb3Jrc3BhY2VMaWZlY3ljbGVTdGF0dXMSFAoHYm9ybl9hdBgDIAEoCUgAiAEBQgoKCF9ib3JuX2F0IlsKG0NoaWxkV29ya3NwYWNlUXVlcnlSZXNwb25zZRI8CghjaGlsZHJlbhgBIAMoCzIqLm5vbW9zLmtlcm5lbC52MS5DaGlsZFdvcmtzcGFjZVF1ZXJ5UmVjb3JkIh8KHUluc3RhbGxlZExhd0RlY2xhcmF0aW9uc1F1ZXJ5IjcKEEluc3RhbGxlZExhd1VuaXQSEAoIdW5pdF9rZXkYASABKAkSEQoJdW5pdF9oYXNoGAIgASgJIowBChNJbnN0YWxsZWRMYXdVbml0U2V0EhQKDHNldF9pZGVudGl0eRgBIAEoCRIYChBjb21wb3Nlcl92ZXJzaW9uGAIgASgJEhMKC29wZW51c2RfcmV2GAMgASgJEjAKBXVuaXRzGAQgAygLMiEubm9tb3Mua2VybmVsLnYxLkluc3RhbGxlZExhd1VuaXQigQIKHkRlY2xhcmVkQXV0aGVudGljYXRpb25Qcm92aWRlchIOCgZkb21haW4YASABKAkSDgoGbWVtYmVyGAIgASgJEjsKC21lbWJlcl9raW5kGAMgASgOMiYubm9tb3Mua2VybmVsLnYxLkRlY2xhcmVkTGF3TWVtYmVyS2luZBJBCgRraW5kGAQgASgOMjMubm9tb3Mua2VybmVsLnYxLkRlY2xhcmVkQXV0aGVudGljYXRpb25Qcm92aWRlcktpbmQSDQoFc2NvcGUYBSABKAkSHAoPaWRlbnRpdHlfc2hhMjU2GAYgASgJSACIAQFCEgoQX2lkZW50aXR5X3NoYTI1NiLpAQofSW5zdGFsbGVkTGF3Q2xvc3VyZURlY2xhcmF0aW9ucxIYChBjbG9zdXJlX2lkZW50aXR5GAEgASgJEg8KB2RvbWFpbnMYAiADKAkSOwoIdW5pdF9zZXQYAyABKAsyJC5ub21vcy5rZXJuZWwudjEuSW5zdGFsbGVkTGF3VW5pdFNldEgAiAEBElEKGGF1dGhlbnRpY2F0aW9uX3Byb3ZpZGVycxgEIAMoCzIvLm5vbW9zLmtlcm5lbC52MS5EZWNsYXJlZEF1dGhlbnRpY2F0aW9uUHJvdmlkZXJCCwoJX3VuaXRfc2V0InQKIEluc3RhbGxlZExhd0RlY2xhcmF0aW9uc1Jlc3BvbnNlEgwKBGhlYWQYASABKAkSQgoIY2xvc3VyZXMYAiADKAsyMC5ub21vcy5rZXJuZWwudjEuSW5zdGFsbGVkTGF3Q2xvc3VyZURlY2xhcmF0aW9ucyLKAQojRGlyZWN0aXZlQXV0aG9yaW5nUmVxdWlyZW1lbnRzUXVlcnkSEQoJZGlyZWN0aXZlGAEgASgJEhYKCXByaW5jaXBhbBgCIAEoCUgAiAEBEhcKCnB1YmxpY19rZXkYAyABKAxIAYgBARIVCghrZXlfaGFzaBgEIAEoCUgCiAEBEhMKBmRvbWFpbhgFIAEoCUgDiAEBQgwKCl9wcmluY2lwYWxCDQoLX3B1YmxpY19rZXlCCwoJX2tleV9oYXNoQgkKB19kb21haW4ijAIKJkRpcmVjdGl2ZUF1dGhvcmluZ1JlcXVpcmVtZW50c1Jlc3BvbnNlEg0KBWZvdW5kGAEgASgIEhMKBmRvbWFpbhgCIAEoCUgAiAEBEhUKCHJlbGF0aW9uGAMgASgJSAGIAQESEwoGb2JqZWN0GAQgASgJSAKIAQESEgoFYWN0b3IYBSABKAlIA4gBARIVCghrZXlfaGFzaBgGIAEoCUgEiAEBEhcKD3NpZ25lcl9lbnJvbGxlZBgHIAEoCBIUCgxyb2xlX2FsbG93ZWQYCCABKAhCCQoHX2RvbWFpbkILCglfcmVsYXRpb25CCQoHX29iamVjdEIICgZfYWN0b3JCCwoJX2tleV9oYXNoInIKGkF1dGhlbnRpY2F0aW9uUG9zdHVyZVF1ZXJ5Eh4KFmluY2x1ZGVfYmlydGhfZXZpZGVuY2UYASABKAgSHgoRZGV2aWNlX3B1YmxpY19rZXkYAiABKAxIAIgBAUIUChJfZGV2aWNlX3B1YmxpY19rZXki7AIKHUF1dGhlbnRpY2F0aW9uUG9zdHVyZVJlc3BvbnNlEkgKDnByb3ZpZGVyX3Rva2VuGAEgASgOMjAubm9tb3Mua2VybmVsLnYxLlByb3ZpZGVyVG9rZW5WZXJpZmljYXRpb25TdGF0dXMSFwoPZW5yb2xsZWRfZGV2aWNlGAIgASgIEhoKEnJlc29sdmVkX3ByaW5jaXBhbBgDIAEoCRJECg5iaXJ0aF9ldmlkZW5jZRgEIAEoCzInLm5vbW9zLmtlcm5lbC52MS5CaXJ0aEV2aWRlbmNlUmVhZGluZXNzSACIAQESQQoUZGV2aWNlX3NpZ25lcl9zdGF0dXMYBSABKA4yIy5ub21vcy5rZXJuZWwudjEuRGV2aWNlU2lnbmVyU3RhdHVzEhoKEmRldmljZV9rZXlfc3ViamVjdBgGIAEoCRIUCgxzaWduZXJfZXBvY2gYByABKANCEQoPX2JpcnRoX2V2aWRlbmNlIl4KFkJpcnRoRXZpZGVuY2VSZWFkaW5lc3MSNAoGc3RhdHVzGAEgASgOMiQubm9tb3Mua2VybmVsLnYxLkJpcnRoRXZpZGVuY2VTdGF0dXMSDgoGZGV0YWlsGAIgASgJIigKF093bmVkRGV2aWNlUmVxdWVzdFF1ZXJ5Eg0KBXNjb3BlGAEgASgJIjIKGk93bmVkRGV2aWNlUmVxdWVzdFJlc3BvbnNlEhQKDHJlcXVlc3RfdXNkYRgBIAEoDCJAChlPd25lZFByZXBhcmVBcHByb3ZhbFF1ZXJ5Eg0KBXNjb3BlGAEgASgJEhQKDHJlcXVlc3RfdXNkYRgCIAEoDCK/AQocT3duZWRQcmVwYXJlQXBwcm92YWxSZXNwb25zZRIXCg9uZXdfa2V5X3N1YmplY3QYASABKAkSGgoSb3duZWRfY3VzdG9keV91c2RhGAIgASgMEhQKDHZlcmlmaWVkX3ZpYRgDIAEoCRIYChB2YWxpZF9mcm9tX2Vwb2NoGAQgASgEEh8KF2FwcHJvdmVkX2F0X3VuaXhfbWlsbGlzGAUgASgEEhkKEW93bmVkX2tleV9zdWJqZWN0GAYgASgJIpIBCg5RdWVyeUF1dGhvcml0eRIXCg9wcmluY2lwYWxfY2xhaW0YASABKAkSEgoKYXV0aF90b2tlbhgCIAEoDBIQCghub3dfdW5peBgDIAEoBBIVCg1hdXRob3Jfc2VjcmV0GAQgASgMEioKBGtleXMYBSADKAsyHC5ub21vcy5rZXJuZWwudjEuSW5qZWN0ZWRLZXkiOAoLSW5qZWN0ZWRLZXkSDQoFc2NvcGUYASABKAkSDQoFZXBvY2gYAiABKAQSCwoDa2V5GAMgASgMItgBCglSb3dzUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhEKCXByaW5jaXBhbBgDIAEoCRIWCg5hcmd1bWVudHNfdXNkYRgEIAEoDBIzChVhcHBsaWNhdGlvbl9hcmd1bWVudHMYBSABKAsyFC5nb29nbGUucHJvdG9idWYuQW55EhsKDnNpbmNlX2Zyb250aWVyGAYgASgJSACIAQFCEQoPX3NpbmNlX2Zyb250aWVyIsYBCglQYWdlUXVlcnkSCgoCaWQYASABKAkSLwoJYXJndW1lbnRzGAIgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0Eg0KBWxpbWl0GAMgASgNEg0KBWFmdGVyGAQgASgJEhEKCXByaW5jaXBhbBgFIAEoCRIWCg5hcmd1bWVudHNfdXNkYRgGIAEoDBIzChVhcHBsaWNhdGlvbl9hcmd1bWVudHMYByABKAsyFC5nb29nbGUucHJvdG9idWYuQW55IkwKCUJ5SWRRdWVyeRIWCg5hZ2dyZWdhdGVfdHlwZRgBIAEoCRIUCgxhZ2dyZWdhdGVfaWQYAiABKAkSEQoJcHJpbmNpcGFsGAMgASgJIjgKC0J5VHlwZVF1ZXJ5EhYKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJEhEKCXByaW5jaXBhbBgCIAEoCSJcCghOb21vc1JlZhIRCgl3b3Jrc3BhY2UYASABKAkSFgoOYWdncmVnYXRlX3R5cGUYAiABKAkSFAoMYWdncmVnYXRlX2lkGAMgASgJEg8KB3ZlcnNpb24YBCABKAkiTgoQUmVzb2x2ZVJlZnNRdWVyeRInCgRyZWZzGAEgAygLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEhEKCXByaW5jaXBhbBgCIAEoCSJOChZSZWZlcmVuY2VWZXJzaW9uc1F1ZXJ5EjQKBHJlZnMYASADKAsyJi5ub21vcy5rZXJuZWwudjEuUmVmZXJlbmNlVmVyc2lvbkNoZWNrIoQBChVSZWZlcmVuY2VWZXJzaW9uQ2hlY2sSKQoGcGlubmVkGAEgASgLMhkubm9tb3Mua2VybmVsLnYxLk5vbW9zUmVmEikKBnNlcmllcxgCIAEoCzIZLm5vbW9zLmtlcm5lbC52MS5Ob21vc1JlZhIVCg1jdXJyZW50X2ZpZWxkGAMgASgJImIKClRhbGx5UXVlcnkSCgoCaWQYASABKAkSEQoJcHJpbmNpcGFsGAMgASgJEhYKCWdyb3VwX2tleRgEIAEoCUgAiAEBQgwKCl9ncm91cF9rZXlKBAgCEANSCWFyZ3VtZW50cyJ6CgxTcGF0aWFsUXVlcnkSCgoCaWQYASABKAkSEQoJcHJpbmNpcGFsGAMgASgJEg0KBW1pbl94GAQgASgBEg0KBW1pbl95GAUgASgBEg0KBW1heF94GAYgASgBEg0KBW1heF95GAcgASgBSgQIAhADUglhcmd1bWVudHMiWgoVUGVuZGluZ0NvbmZsaWN0c1F1ZXJ5EhsKDmFnZ3JlZ2F0ZV90eXBlGAEgASgJSACIAQESEQoJcHJpbmNpcGFsGAIgASgJQhEKD19hZ2dyZWdhdGVfdHlwZSIwChtQZW5kaW5nQ29uZmxpY3RTdW1tYXJ5UXVlcnkSEQoJcHJpbmNpcGFsGAEgASgJInEKCk5hbWVkUXVlcnkSMgoJb3BlcmF0aW9uGAEgASgOMh8ubm9tb3Mua2VybmVsLnYxLlF1ZXJ5T3BlcmF0aW9uEi8KCWFyZ3VtZW50cxgCIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCLkAQoZRnJvbnRpZXJUcmFuc2l0aW9uUmVxdWVzdBIOCgZkb21haW4YASABKAkSFgoOY2FuZGlkYXRlX2hhc2gYAiABKAkSDwoHYXRfaGFzaBgDIAEoCRIhChlhY2tub3dsZWRnZW1lbnRfcHJpbmNpcGFsGAQgASgJEiAKE3Jlc3RvcmVfcHJldmlvdXNfb2YYBSABKAlIAIgBARIxCg9jYW5kaWRhdGVfdW5pdHMYBiADKAsyGC5ub21vcy5rZXJuZWwudjEuTGF3VW5pdEIWChRfcmVzdG9yZV9wcmV2aW91c19vZiJaCiVGcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbk1hcEVudHJ5EhgKEHNvdXJjZV9zdGFibGVfaWQYASABKAkSFwoPYWNrbm93bGVkZ2VtZW50GAIgASgJIvUBCh5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbnMSDwoHcmV0aXJlZBgBIAMoCRJHCgdyZXR5cGVkGAIgAygLMjYubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvbkRpc3Bvc2l0aW9uTWFwRW50cnkSRwoHcmViaW5kcxgDIAMoCzI2Lm5vbW9zLmtlcm5lbC52MS5Gcm9udGllclRyYW5zaXRpb25EaXNwb3NpdGlvbk1hcEVudHJ5EhwKD2Fja25vd2xlZGdlZF9ieRgEIAEoCUgAiAEBQhIKEF9hY2tub3dsZWRnZWRfYnkiPQobRnJvbnRpZXJUcmFuc2l0aW9uVmlvbGF0aW9uEg4KBmRvbWFpbhgBIAEoCRIOCgZkZXRhaWwYAiABKAki1wIKGkZyb250aWVyVHJhbnNpdGlvblJlc3BvbnNlEg8KB2F0X2hhc2gYASABKAkSGQoMY3VycmVudF9oYXNoGAIgASgJSACIAQESFQoNYXRfc3RhdGVfcm9vdBgDIAEoCRIWCg5jYW5kaWRhdGVfaGFzaBgEIAEoCRIOCgZkb21haW4YBSABKAkSDwoHZG9tYWlucxgGIAMoCRINCgVyZWFkeRgHIAEoCBJACgp2aW9sYXRpb25zGAggAygLMiwubm9tb3Mua2VybmVsLnYxLkZyb250aWVyVHJhbnNpdGlvblZpb2xhdGlvbhJKCgxkaXNwb3NpdGlvbnMYCSABKAsyLy5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJUcmFuc2l0aW9uRGlzcG9zaXRpb25zSAGIAQFCDwoNX2N1cnJlbnRfaGFzaEIPCg1fZGlzcG9zaXRpb25zIi8KE0F1dGhvcml6YXRpb25PYmplY3QSDAoEdHlwZRgBIAEoCRIKCgJpZBgCIAEoCSJUChRBdXRob3JpemF0aW9uU3ViamVjdBIMCgR0eXBlGAEgASgJEgoKAmlkGAIgASgJEhUKCHJlbGF0aW9uGAMgASgJSACIAQFCCwoJX3JlbGF0aW9uIpwBChhSZWxhdGlvbnNoaXBUdXBsZUFkZHJlc3MSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBIQCghyZWxhdGlvbhgCIAEoCRI2CgdzdWJqZWN0GAMgASgLMiUubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25TdWJqZWN0IoEBChhBdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSIwoZY3VycmVudF92ZXJpZmllZF9mcm9udGllchgBIAEoCEgAEhkKD2F0X2xlYXN0X2NvbW1pdBgCIAEoCUgAEhYKDGV4YWN0X2NvbW1pdBgDIAEoCUgAQg0KC3JlcXVpcmVtZW50ImYKHUF1dGhvcml6YXRpb25Db25kaXRpb25Db250ZXh0EhQKDGNvbmRpdGlvbl9pZBgBIAEoCRIvCglhcmd1bWVudHMYAiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3Qi9wIKGUF1dGhvcml6YXRpb25DaGVja1JlcXVlc3QSNgoIcmVzb3VyY2UYASABKAsyJC5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbk9iamVjdBISCgpwZXJtaXNzaW9uGAIgASgJEjYKB3N1YmplY3QYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvblN1YmplY3QSPgoLY29uc2lzdGVuY3kYBCABKAsyKS5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbnNpc3RlbmN5Ej8KB2NvbnRleHQYBSADKAsyLi5ub21vcy5rZXJuZWwudjEuQXV0aG9yaXphdGlvbkNvbmRpdGlvbkNvbnRleHQSIAoTZXhwZWN0ZWRfbW9kZWxfaGFzaBgGIAEoCUgAiAEBEhsKE2luY2x1ZGVfZXhwbGFuYXRpb24YByABKAhCFgoUX2V4cGVjdGVkX21vZGVsX2hhc2gi7QIKGkF1dGhvcml6YXRpb25FeHBhbmRSZXF1ZXN0EjYKCHJlc291cmNlGAEgASgLMiQubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25PYmplY3QSEgoKcGVybWlzc2lvbhgCIAEoCRI+Cgtjb25zaXN0ZW5jeRgDIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uc2lzdGVuY3kSPwoHY29udGV4dBgEIAMoCzIuLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uQ29uZGl0aW9uQ29udGV4dBIgChNleHBlY3RlZF9tb2RlbF9oYXNoGAUgASgJSACIAQESDQoFbGltaXQYBiABKA0SEgoFYWZ0ZXIYByABKAlIAYgBARIbChNpbmNsdWRlX2V4cGxhbmF0aW9uGAggASgIQhYKFF9leHBlY3RlZF9tb2RlbF9oYXNoQggKBl9hZnRlciK9AQoZUmVsYXRpb25zaGlwVHVwbGVFdmlkZW5jZRI4CgV0dXBsZRgBIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5SZWxhdGlvbnNoaXBUdXBsZUFkZHJlc3MSEAoIdHVwbGVfaWQYAiABKAkSGgoSYXNzZXJ0aW9uX2V2ZW50X2lkGAMgASgJEiAKE3Jldm9jYXRpb25fZXZlbnRfaWQYBCABKAlIAIgBAUIWChRfcmV2b2NhdGlvbl9ldmVudF9pZCLhAwoYQXV0aG9yaXphdGlvbkV4cGxhbmF0aW9uEkYKCW9wZXJhdGlvbhgBIAEoDjIzLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb24uT3BlcmF0aW9uEhAKCHJlbGF0aW9uGAIgASgJEg4KBnJlc3VsdBgDIAEoCBI8CghldmlkZW5jZRgEIAMoCzIqLm5vbW9zLmtlcm5lbC52MS5SZWxhdGlvbnNoaXBUdXBsZUV2aWRlbmNlEjsKCGNoaWxkcmVuGAUgAygLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbiLfAQoJT3BlcmF0aW9uEhkKFU9QRVJBVElPTl9VTlNQRUNJRklFRBAAEhQKEE9QRVJBVElPTl9ESVJFQ1QQARIeChpPUEVSQVRJT05fQ09NUFVURURfVVNFUlNFVBACEh4KGk9QRVJBVElPTl9UVVBMRV9UT19VU0VSU0VUEAMSEwoPT1BFUkFUSU9OX1VOSU9OEAQSGgoWT1BFUkFUSU9OX0lOVEVSU0VDVElPThAFEhcKE09QRVJBVElPTl9FWENMVVNJT04QBhIXChNPUEVSQVRJT05fQ09ORElUSU9OEAcidwoaQXV0aG9yaXphdGlvbkRlY2lzaW9uQmFzaXMSIAoYYXV0aG9yaXphdGlvbl9tb2RlbF9oYXNoGAEgASgJEiEKGXJlbGF0aW9uc2hpcF9zdGF0ZV9jb21taXQYAiABKAkSFAoMY29udGV4dF9oYXNoGAMgASgMIr4BChpBdXRob3JpemF0aW9uQ2hlY2tSZXNwb25zZRIPCgdhbGxvd2VkGAEgASgIEjoKBWJhc2lzGAIgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25EZWNpc2lvbkJhc2lzEkMKC2V4cGxhbmF0aW9uGAMgASgLMikubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25FeHBsYW5hdGlvbkgAiAEBQg4KDF9leHBsYW5hdGlvbiKDAgobQXV0aG9yaXphdGlvbkV4cGFuZFJlc3BvbnNlEjcKCHN1YmplY3RzGAEgAygLMiUubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25TdWJqZWN0EjoKBWJhc2lzGAIgASgLMisubm9tb3Mua2VybmVsLnYxLkF1dGhvcml6YXRpb25EZWNpc2lvbkJhc2lzEhEKBG5leHQYAyABKAlIAIgBARJDCgtleHBsYW5hdGlvbhgEIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5BdXRob3JpemF0aW9uRXhwbGFuYXRpb25IAYgBAUIHCgVfbmV4dEIOCgxfZXhwbGFuYXRpb24iqAEKDU91dGJveFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBItCgVjbG9jaxgCIAEoCzIeLm5vbW9zLmtlcm5lbC52MS5DYXB0dXJlZENsb2NrEjYKB3ByZXBhcmUYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuUHJlcGFyZU91dGJvdW5kT2ZmZXIitgEKC1N5bmNSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSEQoJZnJvbV9iYXNlGAIgASgJEg8KB3RvX2hlYWQYAyABKAkSGgoScGFya19yZWZ1c2VkX2xvY2FsGAQgASgIEhgKEHBhcmtlZF9hdF9taWxsaXMYBSABKAQSGwoTcmVwbGF5X29mZmVyX2J1ZGdldBgGIAEoDSLTAQoaS2VybmVsQ29uZmlndXJhdGlvblJlcXVlc3QSHQoVdHJ1c3Rfcm9vdF9wdWJsaWNfa2V5GAEgASgMEiUKGHRydXN0c19jdXN0b2RpYW5faGlzdG9yeRgCIAEoCEgAiAEBEiAKE2RlZmVycmVkX2R1cmFiaWxpdHkYAyABKAhIAYgBARIYChBob3N0X2NhbGxfbGVkZ2VyGAQgASgIQhsKGV90cnVzdHNfY3VzdG9kaWFuX2hpc3RvcnlCFgoUX2RlZmVycmVkX2R1cmFiaWxpdHkigAEKG0tlcm5lbENvbmZpZ3VyYXRpb25SZXNwb25zZRItCgZyZXN1bHQYASABKAsyHS5ub21vcy5rZXJuZWwudjEuQWNrbm93bGVkZ2VkEh0KEGhvc3RfY2FsbF9sZWRnZXIYAiABKA1IAIgBAUITChFfaG9zdF9jYWxsX2xlZGdlciKTEwoOQ3VzdG9keVJlcXVlc3QSNwoKcGFja19kZWx0YRgKIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXF1ZXN0SAASNwoKYXBwbHlfcGFjaxgLIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5BcHBseVBhY2tSZXF1ZXN0SAASNwoKcmVwb19zdGF0cxgMIAEoCzIhLm5vbW9zLmtlcm5lbC52MS5SZXBvU3RhdHNSZXF1ZXN0SAASPQoNaW50ZW50c19hYm92ZRgNIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXF1ZXN0SAASPwoOaW5zcGVjdF9jaGFuZ2UYDiABKAsyJS5ub21vcy5rZXJuZWwudjEuSW5zcGVjdENoYW5nZVJlcXVlc3RIABJOChZlbmNvZGVfcmVmdXNhbF92ZXJkaWN0GA8gASgLMiwubm9tb3Mua2VybmVsLnYxLkVuY29kZVJlZnVzYWxWZXJkaWN0UmVxdWVzdEgAElAKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi0ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlcXVlc3RIABI1CglyZWFkX2Jsb2IYESABKAsyIC5ub21vcy5rZXJuZWwudjEuUmVhZEJsb2JSZXF1ZXN0SAASOQoLcmVzb2x2ZV9yZWYYEiABKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzb2x2ZVJlZlJlcXVlc3RIABI1CglsaXN0X3JlZnMYEyABKAsyIC5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXF1ZXN0SAASNQoJd3JpdGVfcmVmGBQgASgLMiAubm9tb3Mua2VybmVsLnYxLldyaXRlUmVmUmVxdWVzdEgAEjcKCmRlbGV0ZV9yZWYYFSABKAsyIS5ub21vcy5rZXJuZWwudjEuRGVsZXRlUmVmUmVxdWVzdEgAEkQKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMicubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlcXVlc3RIABJCChBsYXdfY2xvc3VyZV9pbmZvGBcgASgLMiYubm9tb3Mua2VybmVsLnYxLkxhd0Nsb3N1cmVJbmZvUmVxdWVzdEgAEkUKEWNoZWNrcG9pbnRfZXhwb3J0GBggASgLMigubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRFeHBvcnRSZXF1ZXN0SAASRQoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKC5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlcXVlc3RIABJDChBjYXBhY2l0eV9yZXNlcnZlGBogASgLMicubm9tb3Mua2VybmVsLnYxLkNhcGFjaXR5UmVzZXJ2ZVJlcXVlc3RIABI7CgxyZXN0b3JlX21haW4YGyABKAsyIy5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5SZXF1ZXN0SAASTgoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3RIABJHChJyZXNpZGVudF9mb290cHJpbnQYHSABKAsyKS5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnRSZXF1ZXN0SAASQQoPaGlzdG9yeV9zdW1tYXJ5GB4gASgLMiYubm9tb3Mua2VybmVsLnYxLkhpc3RvcnlTdW1tYXJ5UmVxdWVzdEgAEloKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMi5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXF1ZXN0SAASPgoOb3Blbl9naXRfc3RhdGUYICABKAsyJC5ub21vcy5rZXJuZWwudjEuT3BlbkdpdFN0YXRlUmVxdWVzdEgAEk4KFnJlYWRfY3VzdG9keV9wbGFjZW1lbnQYISABKAsyLC5ub21vcy5rZXJuZWwudjEuUmVhZEN1c3RvZHlQbGFjZW1lbnRSZXF1ZXN0SAASVAoZaW5zcGVjdF9jdXN0b2R5X3BsYWNlbWVudBgjIAEoCzIvLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q3VzdG9keVBsYWNlbWVudFJlcXVlc3RIABJQChdyZWxlYXNlX3dvcmtzcGFjZV9zdGF0ZRgkIAEoCzItLm5vbW9zLmtlcm5lbC52MS5SZWxlYXNlV29ya3NwYWNlU3RhdGVSZXF1ZXN0SAASXwofcmVjb3JkX3dvcmtzcGFjZV9lZmZlY3Rfb3V0Y29tZRglIAEoCzI0Lm5vbW9zLmtlcm5lbC52MS5SZWNvcmRXb3Jrc3BhY2VFZmZlY3RPdXRjb21lUmVxdWVzdEgAEkwKFWF0dGFjaF9sb2NhbF9mcm9udGllchgmIAEoCzIrLm5vbW9zLmtlcm5lbC52MS5BdHRhY2hMb2NhbEZyb250aWVyUmVxdWVzdEgAEkMKEGFnZ3JlZ2F0ZV9jZW5zdXMYJyABKAsyJy5ub21vcy5rZXJuZWwudjEuQWdncmVnYXRlQ2Vuc3VzUmVxdWVzdEgAEj0KDWF1ZGl0X2N1c3RvZHkYKCABKAsyJC5ub21vcy5rZXJuZWwudjEuQXVkaXRDdXN0b2R5UmVxdWVzdEgAEkgKE2V4cG9ydF9sYXdfcHJvZHVjdHMYKSABKAsyKS5ub21vcy5rZXJuZWwudjEuRXhwb3J0TGF3UHJvZHVjdHNSZXF1ZXN0SAASSAoTaW1wb3J0X2xhd19wcm9kdWN0cxgqIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5JbXBvcnRMYXdQcm9kdWN0c1JlcXVlc3RIABJKChRwcmVwYXJlX2xhd19wcm9kdWN0cxgrIAEoCzIqLm5vbW9zLmtlcm5lbC52MS5QcmVwYXJlTGF3UHJvZHVjdHNSZXF1ZXN0SAASUgoYcmVjb3Zlcl9kZXRhY2hlZF9yZWNlaXB0GCwgASgLMi4ubm9tb3Mua2VybmVsLnYxLlJlY292ZXJEZXRhY2hlZFJlY2VpcHRSZXF1ZXN0SABCCwoJb3BlcmF0aW9uSgQIIhAjUhdhZG9wdF9jdXN0b2R5X3BsYWNlbWVudCJeChZBZ2dyZWdhdGVDZW5zdXNSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSEgoKdHlwZV9saW1pdBgCIAEoDSIxChJBZ2dyZWdhdGVUeXBlQ291bnQSDAoEdHlwZRgBIAEoCRINCgVjb3VudBgCIAEoBCL7AQoXQWdncmVnYXRlQ2Vuc3VzUmVzcG9uc2USEQoEaGVhZBgBIAEoCUgAiAEBEhwKD2FnZ3JlZ2F0ZV9jb3VudBgCIAEoBEgBiAEBEhcKCnN0YXRlX3Jvb3QYAyABKAlIAogBARI2Cgl0b3BfdHlwZXMYBCADKAsyIy5ub21vcy5rZXJuZWwudjEuQWdncmVnYXRlVHlwZUNvdW50Eh0KEHR5cGVzX3N0YXRlX3Jvb3QYBSABKAlIA4gBAUIHCgVfaGVhZEISChBfYWdncmVnYXRlX2NvdW50Qg0KC19zdGF0ZV9yb290QhMKEV90eXBlc19zdGF0ZV9yb290IigKGFJlc2lkZW50Rm9vdHByaW50UmVxdWVzdBIMCgRkZWVwGAEgASgIIvQDChFSZXNpZGVudEZvb3RwcmludBIRCgl3b3Jrc3BhY2UYASABKAkSDgoGYnJhbmNoGAIgASgJEhgKEHJlYWRfbW9kZWxfYnl0ZXMYAyABKAQSHQoVcmVhZF9tb2RlbF9ydXN0X2J5dGVzGAQgASgEEhgKEGZvbGRfc3RhdGVfYnl0ZXMYBSABKAQSEwoLZm9sZF9pbWFnZXMYBiABKA0SHwoXc2hhcmVkX2F0dHJpYnV0ZWRfYnl0ZXMYByABKAQSEgoKYWdncmVnYXRlcxgIIAEoBBI2Cgpjb21wb25lbnRzGAkgAygLMiIubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Q29tcG9uZW50EhIKCmNvbXB1dGVfdXMYCiABKAQSRQoRcmVhZF9zdG9yYWdlX2tpbmQYCyABKA4yKi5ub21vcy5rZXJuZWwudjEuUmVhZFByb2plY3Rpb25TdG9yYWdlS2luZBIfChdzcWxpdGVfY2FjaGVfdXNlZF9ieXRlcxgMIAEoBBIYChBmbGF0X3NjYWxhcl9yb3dzGA0gASgEEh0KFWZsYXRfc2NhbGFyX3Jvd3NfcmVhZBgOIAEoBBIdChBmdWxsX3JlcGxheV9oZWFkGA8gASgJSACIAQFCEwoRX2Z1bGxfcmVwbGF5X2hlYWQiaQoRUmVzaWRlbnRDb21wb25lbnQSNAoEa2luZBgBIAEoDjImLm5vbW9zLmtlcm5lbC52MS5SZXNpZGVudENvbXBvbmVudEtpbmQSDQoFYnl0ZXMYAiABKAQSDwoHY2VpbGluZxgDIAEoCCLKAQoZUmVzaWRlbnRGb290cHJpbnRSZXNwb25zZRI1CglyZXNpZGVudHMYASADKAsyIi5ub21vcy5rZXJuZWwudjEuUmVzaWRlbnRGb290cHJpbnQSHAoUYWxsb2NhdG9yX2xpdmVfYnl0ZXMYAiABKAQSGAoQYXR0cmlidXRlZF9ieXRlcxgDIAEoBBIZChF1bmFjY291bnRlZF9ieXRlcxgEIAEoBBIVCg1hY2NvdW50aW5nX3VzGAUgASgEEgwKBGRlZXAYBiABKAgi4gEKEFBhY2tEZWx0YVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRIdChBzdGFnZWRfcGFja19maWxlGAUgASgJSAKIAQESEgoFZGVwdGgYBiABKA1IA4gBARISCgpiZWxvd19oZWFkGAcgASgIEhIKCmFsc29faGVhZHMYCCADKAlCBwoFX2hlYWRCBwoFX2Jhc2VCEwoRX3N0YWdlZF9wYWNrX2ZpbGVCCAoGX2RlcHRoIvoBChBBcHBseVBhY2tSZXF1ZXN0EgwKBHJlcG8YASABKAkSDgoEcGFjaxgCIAEoDEgAEhoKEHN0YWdlZF9wYWNrX2ZpbGUYBCABKAlIABIaChBjb250aW51ZV9wZW5kaW5nGAggASgISAASGAoOY2FuY2VsX3BlbmRpbmcYCiABKAhIABIRCgRoZWFkGAMgASgJSAGIAQESDwoHc2hhbGxvdxgFIAMoCRIRCgl1bnNoYWxsb3cYBiADKAkSGQoRd29ya19idWRnZXRfYnl0ZXMYByABKAQSEQoJaW1wb3J0X2lkGAkgASgEQggKBnNvdXJjZUIHCgVfaGVhZCIgChBSZXBvU3RhdHNSZXF1ZXN0EgwKBHJlcG8YASABKAkivwEKE0ludGVudHNBYm92ZVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESEQoEYmFzZRgDIAEoCUgBiAEBEg4KBmJyYW5jaBgEIAEoCRINCgVsaW1pdBgFIAEoBBIYChBjb21wbGV0ZV9sb2dpY2FsGAYgASgIEhYKDmNvbXBhY3Rfc3RvcmVkGAcgASgIEhEKCWZyb21fYmFzZRgIIAEoCEIHCgVfaGVhZEIHCgVfYmFzZSJtChVIaXN0b3J5U3VtbWFyeVJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgRoZWFkGAIgASgJSACIAQESDgoGYnJhbmNoGAMgASgJEhEKBGJhc2UYBCABKAlIAYgBAUIHCgVfaGVhZEIHCgVfYmFzZSIrChRJbnNwZWN0Q2hhbmdlUmVxdWVzdBITCgtjaGFuZ2VfdXNkYRgBIAEoDCLfAQoOUmVmdXNhbFZlcmRpY3QSFQoIb2ZmZXJfaWQYASABKAlIAIgBARIQCgNvaWQYAiABKAlIAYgBARITCgZkb21haW4YAyABKAlIAogBARIZCgxkaXJlY3RpdmVfaWQYBCABKAlIA4gBARIUCgdzZXNzaW9uGAUgASgJSASIAQESEQoJcGFya2VkX2F0GAYgASgJEg4KBnJlYXNvbhgHIAEoCUILCglfb2ZmZXJfaWRCBgoEX29pZEIJCgdfZG9tYWluQg8KDV9kaXJlY3RpdmVfaWRCCgoIX3Nlc3Npb24iTwobRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXF1ZXN0EjAKB3ZlcmRpY3QYASABKAsyHy5ub21vcy5rZXJuZWwudjEuUmVmdXNhbFZlcmRpY3QiNAocSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVxdWVzdBIUCgx2ZXJkaWN0X3VzZGEYASABKAwi1AEKFUNvbXBhY3Rpb25FcXVpdmFsZW5jZRITCgtzb3VyY2VfaGVhZBgBIAEoCRIWCg5zb3VyY2VfZ2VuZXNpcxgCIAEoCRIWCg5jYW5kaWRhdGVfaGVhZBgDIAEoCRIZChFjYW5kaWRhdGVfZ2VuZXNpcxgEIAEoCRIWCg5zb3VyY2VfaW50ZW50cxgFIAEoBBIXCg9jYXJyaWVkX2ludGVudHMYBiABKAQSFgoOcGFya2VkX2ludGVudHMYByABKAQSEgoKZXF1aXZhbGVudBgIIAEoCCJ9CiFQcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlcXVlc3QSEwoLc291cmNlX3JlcG8YASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSFgoOY2FuZGlkYXRlX3JlcG8YAyABKAkSFgoOY2FuZGlkYXRlX2hlYWQYBCABKAkiOgoPUmVhZEJsb2JSZXF1ZXN0EgwKBHJlcG8YASABKAkSCwoDb2lkGAIgASgJEgwKBHBhdGgYAyABKAkiUAoRUmVzb2x2ZVJlZlJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSEQoEcGF0aBgDIAEoCUgAiAEBQgcKBV9wYXRoIjYKD1BoeXNpY2FsUmVmRmlsZRIRCglyZWZlcmVuY2UYASABKAkSEAoIY29udGVudHMYAiABKAwipwIKD0xpc3RSZWZzUmVxdWVzdBIMCgRyZXBvGAEgASgJEg4KBnByZWZpeBgCIAEoCRIYChBsb29zZV9yZWZlcmVuY2VzGAMgAygJEiAKGGxvb3NlX2ludmVudG9yeV9jb21wbGV0ZRgEIAEoCBIgChNwYWNrZWRfcmVmc19wcmVzZW50GAUgASgISACIAQESPQoTcGh5c2ljYWxfbG9vc2VfcmVmcxgGIAMoCzIgLm5vbW9zLmtlcm5lbC52MS5QaHlzaWNhbFJlZkZpbGUSHAoUcGh5c2ljYWxfcGFja2VkX3JlZnMYByABKAwSIwobcGh5c2ljYWxfaW52ZW50b3J5X2NvbXBsZXRlGAggASgIQhYKFF9wYWNrZWRfcmVmc19wcmVzZW50IkIKD1dyaXRlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCRIOCgZ0YXJnZXQYAyABKAkiMwoQRGVsZXRlUmVmUmVxdWVzdBIMCgRyZXBvGAEgASgJEhEKCXJlZmVyZW5jZRgCIAEoCSIpCghNZXRhRmlsZRIMCgRwYXRoGAEgASgJEg8KB2NvbnRlbnQYAiABKAwirgEKFldyaXRlTWV0YUNvbW1pdFJlcXVlc3QSDAoEcmVwbxgBIAEoCRIPCgdwYXJlbnRzGAIgAygJEigKBWZpbGVzGAMgAygLMhkubm9tb3Mua2VybmVsLnYxLk1ldGFGaWxlEg8KB21lc3NhZ2UYBCABKAkSFAoMdGltZV9zZWNvbmRzGAUgASgSEhYKCXJlZmVyZW5jZRgGIAEoCUgAiAEBQgwKCl9yZWZlcmVuY2UiZwoVTGF3Q2xvc3VyZUluZm9SZXF1ZXN0EhQKDGNsb3N1cmVfZmlsZRgBIAEoCRI4CgpjYXBhYmlsaXR5GAIgASgOMiQubm9tb3Mua2VybmVsLnYxLktlcm5lbExhd0NhcGFiaWxpdHkihwEKF0NoZWNrcG9pbnRFeHBvcnRSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSIQoUc3RhZ2VkX2Zyb250aWVyX2ZpbGUYAiABKAlIAIgBAUIXChVfc3RhZ2VkX2Zyb250aWVyX2ZpbGUiQQoLRnJvbnRpZXJIbGMSEAoIcGh5c2ljYWwYASABKAQSDwoHbG9naWNhbBgCIAEoDRIPCgdyZXBsaWNhGAMgASgEIu0EChdWZXJpZmllZEZyb250aWVyUmVjZWlwdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRILCgNvaWQYAiABKAkSDwoHaW50ZW50cxgDIAEoBBITCgtwbGFuc19yZXJ1bhgEIAEoBBIcCg9jb250cm9sbGVyX2hhc2gYBSABKAlIAIgBARIZChFpbnN0YWxsZWRfZG9tYWlucxgGIAMoCRIOCgZsaW5lYXIYByABKAgSMwoIbGFzdF9obGMYCCABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAYgBARIUCgdsYXN0X2lkGAkgASgJSAKIAQESEQoJc3RhdGVfb2lkGAogASgJEhQKDHN0YXRlX3NoYTI1NhgLIAEoCRI5Cg5zdGF0ZV9sYXN0X2hsYxgMIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gDiAEBEhoKDXN0YXRlX2xhc3RfaWQYDSABKAlIBIgBARIXCg9tYW5pZmVzdF9zaGEyNTYYDiABKAkSHgoWbGF3X2Nsb3N1cmVfaWRlbnRpdGllcxgPIAMoCRIaChJyZXNvbHZhYmxlX2RvbWFpbnMYECADKAkSIgoVcHJvamVjdGlvbl9zdGF0ZV9yb290GBEgASgJSAWIAQESDgoGd2Fsa2VkGBIgASgIQhIKEF9jb250cm9sbGVyX2hhc2hCCwoJX2xhc3RfaGxjQgoKCF9sYXN0X2lkQhEKD19zdGF0ZV9sYXN0X2hsY0IQCg5fc3RhdGVfbGFzdF9pZEIYChZfcHJvamVjdGlvbl9zdGF0ZV9yb290IkUKFUZvbGRGcm9udGllckFnZ3JlZ2F0ZRIUCgxhZ2dyZWdhdGVfaWQYASABKAkSFgoOYWdncmVnYXRlX3VzZGEYAiABKAwiQQoXRm9sZEZyb250aWVyRmluZ2VycHJpbnQSEQoJaW50ZW50X2lkGAEgASgJEhMKC2ZpbmdlcnByaW50GAIgASgJItYDChRGb2xkRnJvbnRpZXJTbmFwc2hvdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRILCgN0aXAYAiABKAkSDwoHZ2VuZXNpcxgDIAEoCRIVCg1oaXN0b3J5X2RlcHRoGAQgASgEEjoKCmFnZ3JlZ2F0ZXMYBSADKAsyJi5ub21vcy5rZXJuZWwudjEuRm9sZEZyb250aWVyQWdncmVnYXRlEjgKDWhsY193YXRlcm1hcmsYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuRnJvbnRpZXJIbGNIAIgBARIzCghsYXN0X2hsYxgHIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Gcm9udGllckhsY0gBiAEBEhQKB2xhc3RfaWQYCCABKAlIAogBARIWCg5zdHJpa2VfdGFyZ2V0cxgJIAMoCRJFChNpbnRlbnRfZmluZ2VycHJpbnRzGAogAygLMigubm9tb3Mua2VybmVsLnYxLkZvbGRGcm9udGllckZpbmdlcnByaW50EhcKCnN0YXRlX3Jvb3QYCyABKAlIA4gBAUIQCg5faGxjX3dhdGVybWFya0ILCglfbGFzdF9obGNCCgoIX2xhc3RfaWRCDQoLX3N0YXRlX3Jvb3QimwMKGFN0b3JlZENoZWNrcG9pbnRNYW5pZmVzdBIWCg5mb3JtYXRfdmVyc2lvbhgBIAEoDRITCgZjdXJzb3IYAiABKAlIAIgBARIYChBjaGVja3BvaW50X2J5dGVzGAMgASgEEhAKCGxhd19oYXNoGAQgASgJEjsKC2NvbXByZXNzaW9uGAUgASgOMiYubm9tb3Mua2VybmVsLnYxLkNoZWNrcG9pbnRDb21wcmVzc2lvbhIRCglyYXdfYnl0ZXMYBiABKAQSFAoMc3RvcmVkX2J5dGVzGAcgASgEEh0KFWZyb250aWVyX3N0b3JlZF9ieXRlcxgIIAEoBBIXCgpzdGF0ZV9yb290GAkgASgJSAGIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgKIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgCiAEBQgkKB19jdXJzb3JCDQoLX3N0YXRlX3Jvb3RCHAoaX3ZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQiwQMKF0NoZWNrcG9pbnRJbXBvcnRSZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSEgoIZnJvbnRpZXIYAiABKAxIABIeChRzdGFnZWRfZnJvbnRpZXJfZmlsZRgGIAEoCUgAEhMKBmN1cnNvchgDIAEoCUgBiAEBEhcKCnN0YXRlX3Jvb3QYBCABKAlIAogBARINCgVzcGFucxgFIAEoCBIRCgRoZWFkGAcgASgJSAOIAQESUAoZdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdBgIIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5WZXJpZmllZEZyb250aWVyUmVjZWlwdEgEiAEBEkoKE3ZlcmlmaWNhdGlvbl9wb2xpY3kYCSABKA4yLS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludFZlcmlmaWNhdGlvblBvbGljeUIRCg9mcm9udGllcl9zb3VyY2VCCQoHX2N1cnNvckINCgtfc3RhdGVfcm9vdEIHCgVfaGVhZEIcChpfdmVyaWZpZWRfZnJvbnRpZXJfcmVjZWlwdCIxChZDYXBhY2l0eVJlc2VydmVSZXF1ZXN0EhcKD2FnZ3JlZ2F0ZV9jb3VudBgBIAEoBCKZAgoSUmVzdG9yZU1haW5SZXF1ZXN0EjAKBnRhcmdldBgBIAEoCzIgLm5vbW9zLmtlcm5lbC52MS5Xb3Jrc3BhY2VUYXJnZXQSDAoEaGVhZBgCIAEoCRITCgtkaWFnbm9zdGljcxgDIAEoCBIYChBvcGVyYXRvcl9jdXN0b2R5GAQgASgIEiAKE2V4cGVjdGVkX2xvY2FsX2hlYWQYBSABKAlIAIgBARJAChNjdXN0b2R5X2NlcnRpZmljYXRlGAYgASgLMiMubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlDZXJ0aWZpY2F0ZRIYChBwcm92aWRlcl9jdXN0b2R5GAcgASgIQhYKFF9leHBlY3RlZF9sb2NhbF9oZWFkIm0KE0F1ZGl0Q3VzdG9keVJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIVCg1idWRnZXRfbWljcm9zGAIgASgNEg0KBXN0YXJ0GAMgASgIIpQBChRBdWRpdEN1c3RvZHlSZXNwb25zZRIPCgdwZW5kaW5nGAEgASgIEgwKBGhlYWQYAiABKAkSDgoGd2Fsa2VkGAMgASgEEg0KBXRvdGFsGAQgASgEEg8KB291dGNvbWUYBSABKAkSLQoHdmVyZGljdBgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdCJ+CgtMYXdQcm9kdWN0cxIUCgxsYXdfaWRlbnRpdHkYASABKAkSFgoOZm9ybWF0X3ZlcnNpb24YAiABKA0SEgoKcmVhZF9sYXllchgDIAEoDBIVCg1jb21tYW5kX2xheWVyGAQgASgMEhYKDnNlbWFudGljX2xheWVyGAUgASgMIkwKGEV4cG9ydExhd1Byb2R1Y3RzUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0IlkKGUV4cG9ydExhd1Byb2R1Y3RzUmVzcG9uc2USDAoEaGVhZBgBIAEoCRIuCghwcm9kdWN0cxgCIAMoCzIcLm5vbW9zLmtlcm5lbC52MS5MYXdQcm9kdWN0cyJ8ChhJbXBvcnRMYXdQcm9kdWN0c1JlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIuCghwcm9kdWN0cxgCIAMoCzIcLm5vbW9zLmtlcm5lbC52MS5MYXdQcm9kdWN0cyItChlJbXBvcnRMYXdQcm9kdWN0c1Jlc3BvbnNlEhAKCGltcG9ydGVkGAEgAygJIm8KEkN1c3RvZHlDZXJ0aWZpY2F0ZRIRCgl3b3Jrc3BhY2UYASABKAkSDAoEaGVhZBgCIAEoCRIRCglrZXlfZXBvY2gYAyABKAMSEgoKcHVibGljX2tleRgEIAEoDBIRCglzaWduYXR1cmUYBSABKAwiZAoTT3BlbkdpdFN0YXRlUmVxdWVzdBIwCgZ0YXJnZXQYASABKAsyIC5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlVGFyZ2V0EgwKBGhlYWQYAiABKAkSDQoFc3BhbnMYAyABKAgiawoaQXR0YWNoTG9jYWxGcm9udGllclJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBIMCgRoZWFkGAIgASgJEg0KBXNwYW5zGAMgASgIIlMKDUN1c3RvZHlSZW1vdGUSDAoEbmFtZRgBIAEoCRILCgN1cmwYAiABKAkSFQoNcGVlcl9pZGVudGl0eRgDIAEoCRIQCghwcmlvcml0eRgEIAEoDSLGAQoUQ3VzdG9keVBsYWNlbWVudFJ1bGUSEgoKcGVlcl9jbGFzcxgBIAEoCRJAChBrZXJuZWxfcmVzaWRlbmN5GAIgASgOMiYubm9tb3Mua2VybmVsLnYxLktlcm5lbFJlc2lkZW5jeUludGVudBJCChFjdXN0b2R5X3JldGVudGlvbhgDIAEoDjInLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UmV0ZW50aW9uSW50ZW50EhQKDHJlbW90ZV9uYW1lcxgEIAMoCSKuAgoWQ3VzdG9keVBsYWNlbWVudFBvbGljeRITCgtkZWNsYXJhdGlvbhgBIAEoCRIWCg5wYWNrYWdlX3NoYTI1NhgCIAEoCRI0CgVydWxlcxgDIAMoCzIlLm5vbW9zLmtlcm5lbC52MS5DdXN0b2R5UGxhY2VtZW50UnVsZRISCgphZG9wdGVkX2J5GAQgASgJEg4KBnJlYXNvbhgFIAEoCRIeChZlZmZlY3RpdmVfdGltZV9zZWNvbmRzGAYgASgSEi8KB3JlbW90ZXMYByADKAsyHi5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVJlbW90ZRIiChVyZWNpcGllbnRfbWFpbGJveF91cmwYCCABKAlIAIgBAUIYChZfcmVjaXBpZW50X21haWxib3hfdXJsIlkKG0N1c3RvZHlQbGFjZW1lbnRFeHBlY3RhdGlvbhIQCgZhYnNlbnQYASABKAhIABINCgNvaWQYAiABKAlIABINCgNhbnkYAyABKAhIAEIKCghmcm9udGllciIrChtSZWFkQ3VzdG9keVBsYWNlbWVudFJlcXVlc3QSDAoEcmVwbxgBIAEoCSI1Ch5JbnNwZWN0Q3VzdG9keVBsYWNlbWVudFJlcXVlc3QSEwoLcG9saWN5X3VzZGEYASABKAwiiQEKDlBsYWNlbWVudE9mZmVyEj4KCGV4cGVjdGVkGAEgASgLMiwubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlQbGFjZW1lbnRFeHBlY3RhdGlvbhI3CgZwb2xpY3kYAiABKAsyJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFBvbGljeSJpChtSZXNvbHZlU3RhdGVQb3NpdGlvblJlcXVlc3QSDAoEcmVwbxgBIAEoCRIRCgltYWluX2hlYWQYAiABKAkSFQoNaGludGVkX2NvbW1pdBgDIAEoCRISCgpzdGF0ZV9yb290GAQgASgJIpYTCg9DdXN0b2R5UmVzcG9uc2USOAoKcGFja19kZWx0YRgKIAEoCzIiLm5vbW9zLmtlcm5lbC52MS5QYWNrRGVsdGFSZXNwb25zZUgAEjgKCmFwcGx5X3BhY2sYCyABKAsyIi5ub21vcy5rZXJuZWwudjEuQXBwbHlQYWNrUmVzcG9uc2VIABI4CgpyZXBvX3N0YXRzGAwgASgLMiIubm9tb3Mua2VybmVsLnYxLlJlcG9TdGF0c1Jlc3BvbnNlSAASPgoNaW50ZW50c19hYm92ZRgNIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5JbnRlbnRzQWJvdmVSZXNwb25zZUgAEkAKDmluc3BlY3RfY2hhbmdlGA4gASgLMiYubm9tb3Mua2VybmVsLnYxLkluc3BlY3RDaGFuZ2VSZXNwb25zZUgAEk8KFmVuY29kZV9yZWZ1c2FsX3ZlcmRpY3QYDyABKAsyLS5ub21vcy5rZXJuZWwudjEuRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZUgAElEKF2luc3BlY3RfcmVmdXNhbF92ZXJkaWN0GBAgASgLMi4ubm9tb3Mua2VybmVsLnYxLkluc3BlY3RSZWZ1c2FsVmVyZGljdFJlc3BvbnNlSAASNgoJcmVhZF9ibG9iGBEgASgLMiEubm9tb3Mua2VybmVsLnYxLlJlYWRCbG9iUmVzcG9uc2VIABI6CgtyZXNvbHZlX3JlZhgSIAEoCzIjLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlUmVmUmVzcG9uc2VIABI2CglsaXN0X3JlZnMYEyABKAsyIS5ub21vcy5rZXJuZWwudjEuTGlzdFJlZnNSZXNwb25zZUgAEjIKCXdyaXRlX3JlZhgUIAEoCzIdLm5vbW9zLmtlcm5lbC52MS5BY2tub3dsZWRnZWRIABIzCgpkZWxldGVfcmVmGBUgASgLMh0ubm9tb3Mua2VybmVsLnYxLkFja25vd2xlZGdlZEgAEkUKEXdyaXRlX21ldGFfY29tbWl0GBYgASgLMigubm9tb3Mua2VybmVsLnYxLldyaXRlTWV0YUNvbW1pdFJlc3BvbnNlSAASQwoQbGF3X2Nsb3N1cmVfaW5mbxgXIAEoCzInLm5vbW9zLmtlcm5lbC52MS5MYXdDbG9zdXJlSW5mb1Jlc3BvbnNlSAASRgoRY2hlY2twb2ludF9leHBvcnQYGCABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlSAASRgoRY2hlY2twb2ludF9pbXBvcnQYGSABKAsyKS5ub21vcy5rZXJuZWwudjEuQ2hlY2twb2ludEltcG9ydFJlc3BvbnNlSAASRAoQY2FwYWNpdHlfcmVzZXJ2ZRgaIAEoCzIoLm5vbW9zLmtlcm5lbC52MS5DYXBhY2l0eVJlc2VydmVSZXNwb25zZUgAEjwKDHJlc3RvcmVfbWFpbhgbIAEoCzIkLm5vbW9zLmtlcm5lbC52MS5SZXN0b3JlTWFpblJlc3BvbnNlSAASTwoWcmVzb2x2ZV9zdGF0ZV9wb3NpdGlvbhgcIAEoCzItLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlU3RhdGVQb3NpdGlvblJlc3BvbnNlSAASSAoScmVzaWRlbnRfZm9vdHByaW50GB0gASgLMioubm9tb3Mua2VybmVsLnYxLlJlc2lkZW50Rm9vdHByaW50UmVzcG9uc2VIABJCCg9oaXN0b3J5X3N1bW1hcnkYHiABKAsyJy5ub21vcy5rZXJuZWwudjEuSGlzdG9yeVN1bW1hcnlSZXNwb25zZUgAElsKHHByb3ZlX2NvbXBhY3Rpb25fZXF1aXZhbGVuY2UYHyABKAsyMy5ub21vcy5rZXJuZWwudjEuUHJvdmVDb21wYWN0aW9uRXF1aXZhbGVuY2VSZXNwb25zZUgAEj8KDm9wZW5fZ2l0X3N0YXRlGCAgASgLMiUubm9tb3Mua2VybmVsLnYxLk9wZW5HaXRTdGF0ZVJlc3BvbnNlSAASTwoWcmVhZF9jdXN0b2R5X3BsYWNlbWVudBghIAEoCzItLm5vbW9zLmtlcm5lbC52MS5SZWFkQ3VzdG9keVBsYWNlbWVudFJlc3BvbnNlSAASVQoZaW5zcGVjdF9jdXN0b2R5X3BsYWNlbWVudBgjIAEoCzIwLm5vbW9zLmtlcm5lbC52MS5JbnNwZWN0Q3VzdG9keVBsYWNlbWVudFJlc3BvbnNlSAASUQoXcmVsZWFzZV93b3Jrc3BhY2Vfc3RhdGUYJCABKAsyLi5ub21vcy5rZXJuZWwudjEuUmVsZWFzZVdvcmtzcGFjZVN0YXRlUmVzcG9uc2VIABJaCh9yZWNvcmRfd29ya3NwYWNlX2VmZmVjdF9vdXRjb21lGCUgASgLMi8ubm9tb3Mua2VybmVsLnYxLlJlY29yZGVkV29ya3NwYWNlRWZmZWN0T3V0Y29tZUgAEk0KFWF0dGFjaF9sb2NhbF9mcm9udGllchgmIAEoCzIsLm5vbW9zLmtlcm5lbC52MS5BdHRhY2hMb2NhbEZyb250aWVyUmVzcG9uc2VIABJEChBhZ2dyZWdhdGVfY2Vuc3VzGCcgASgLMigubm9tb3Mua2VybmVsLnYxLkFnZ3JlZ2F0ZUNlbnN1c1Jlc3BvbnNlSAASPgoNYXVkaXRfY3VzdG9keRgoIAEoCzIlLm5vbW9zLmtlcm5lbC52MS5BdWRpdEN1c3RvZHlSZXNwb25zZUgAEkkKE2V4cG9ydF9sYXdfcHJvZHVjdHMYKSABKAsyKi5ub21vcy5rZXJuZWwudjEuRXhwb3J0TGF3UHJvZHVjdHNSZXNwb25zZUgAEkkKE2ltcG9ydF9sYXdfcHJvZHVjdHMYKiABKAsyKi5ub21vcy5rZXJuZWwudjEuSW1wb3J0TGF3UHJvZHVjdHNSZXNwb25zZUgAEksKFHByZXBhcmVfbGF3X3Byb2R1Y3RzGCsgASgLMisubm9tb3Mua2VybmVsLnYxLlByZXBhcmVMYXdQcm9kdWN0c1Jlc3BvbnNlSAASQgoYcmVjb3Zlcl9kZXRhY2hlZF9yZWNlaXB0GCwgASgLMh4ubm9tb3Mua2VybmVsLnYxLk9mZmVyUmVzcG9uc2VIAEILCglvcGVyYXRpb25KBAgiECNSF2Fkb3B0X2N1c3RvZHlfcGxhY2VtZW50InAKEVBhY2tEZWx0YVJlc3BvbnNlEgwKBHBhY2sYASABKAwSDQoFYnl0ZXMYAiABKAQSDwoHc2hhbGxvdxgDIAMoCRIPCgdjb21taXRzGAQgASgNEg0KBXRyZWVzGAUgASgNEg0KBWJsb2JzGAYgASgNIuIBChFBcHBseVBhY2tSZXNwb25zZRIUCgxvYmplY3RfY291bnQYASABKAQSEQoJcGFja19oYXNoGAIgASgJEjsKB2Nsb3N1cmUYAyABKAsyJS5ub21vcy5rZXJuZWwudjEuUGh5c2ljYWxDbG9zdXJlQ2hlY2tIAIgBARIWCg5pbXBvcnRfcGVuZGluZxgEIAEoCBIXCg93b3JrX2RvbmVfYnl0ZXMYBSABKAQSEQoJaW1wb3J0X2lkGAYgASgEEhcKD2ltcG9ydF9kZWZlcnJlZBgHIAEoCEIKCghfY2xvc3VyZSJtChRQaHlzaWNhbENsb3N1cmVDaGVjaxIWCg5yZXVzZWRfcmVjZWlwdBgBIAEoCBIUCgxjb21taXRzX3JlYWQYAiABKAQSEgoKdHJlZXNfcmVhZBgDIAEoBBITCgtsZWF2ZXNfcmVhZBgEIAEoBCK4AQoRUmVwb1N0YXRzUmVzcG9uc2USEwoLdG90YWxfYnl0ZXMYASABKAQSFAoMb2JqZWN0X2J5dGVzGAIgASgEEhUKDWxvb3NlX29iamVjdHMYAyABKAQSEwoLbG9vc2VfYnl0ZXMYBCABKAQSEgoKcGFja19maWxlcxgFIAEoBBISCgpwYWNrX2J5dGVzGAYgASgEEhMKC2luZGV4X2J5dGVzGAcgASgEEg8KB3NoYWxsb3cYCCADKAki4gEKDEludGVudFJlY29yZBILCgNvaWQYASABKAkSEQoJaW50ZW50X2lkGAIgASgJEg4KBmRvbWFpbhgDIAEoCRIRCglkaXJlY3RpdmUYBCABKAkSEwoLY2hhbmdlX3VzZGEYBSABKAwSLgoIc2VtYW50aWMYBiABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSSgoVdHJhbnNwb3J0X3JlcXVpcmVtZW50GAcgASgOMisubm9tb3Mua2VybmVsLnYxLkludGVudFRyYW5zcG9ydFJlcXVpcmVtZW50IkYKFEludGVudHNBYm92ZVJlc3BvbnNlEi4KB2ludGVudHMYASADKAsyHS5ub21vcy5rZXJuZWwudjEuSW50ZW50UmVjb3JkInQKFkhpc3RvcnlTdW1tYXJ5UmVzcG9uc2USDAoEaGVhZBgBIAEoCRIOCgZvbGRlc3QYAiABKAkSFAoMY29tbWl0X2NvdW50GAMgASgEEhAKCGNvbXBsZXRlGAQgASgIEhQKDHJlYWNoZWRfYmFzZRgFIAEoCCJCChNOb21pbmFsQ2FsbElkZW50aXR5EhMKC2RvbWFpbl9wYXRoGAEgASgJEhYKDmRpcmVjdGl2ZV9wYXRoGAIgASgJIogBChhMaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSHwoXdGFyZ2V0X2Nsb3N1cmVfaWRlbnRpdHkYASABKAkSFAoMaW5zdGFsbGVkX2J5GAIgASgJEjUKBXBoYXNlGAMgASgOMiYubm9tb3Mua2VybmVsLnYxLkxpZmVjeWNsZUluc3RhbGxQaGFzZSJaCh1Xb3Jrc3BhY2VSZXNpZGVuY3lSZXF1aXJlbWVudBIRCgl3b3Jrc3BhY2UYASABKAkSEwoLc291cmNlX2hlYWQYAiABKAkSEQoJZm9sZF9yb290GAMgASgJIrQCChVJbnNwZWN0Q2hhbmdlUmVzcG9uc2USLgoIc2VtYW50aWMYASABKAsyHC5ub21vcy5rZXJuZWwudjEuTm9tb3NTdHJ1Y3QSEQoJaW50ZW50X2lkGAIgASgJEjIKBGNhbGwYAyABKAsyJC5ub21vcy5rZXJuZWwudjEuTm9taW5hbENhbGxJZGVudGl0eRIQCghhdXRob3JlZBgEIAEoCBJEChFsaWZlY3ljbGVfaW5zdGFsbBgFIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5MaWZlY3ljbGVJbnN0YWxsSWRlbnRpdHkSTAoUcmVxdWlyZWRfcmVzaWRlbmNpZXMYBiADKAsyLi5ub21vcy5rZXJuZWwudjEuV29ya3NwYWNlUmVzaWRlbmN5UmVxdWlyZW1lbnQiTAocUmVzb2x2ZVN0YXRlUG9zaXRpb25SZXNwb25zZRIaCg1yZXNvbHZlZF9oZWFkGAEgASgJSACIAQFCEAoOX3Jlc29sdmVkX2hlYWQiNAocRW5jb2RlUmVmdXNhbFZlcmRpY3RSZXNwb25zZRIUCgx2ZXJkaWN0X3VzZGEYASABKAwiUQodSW5zcGVjdFJlZnVzYWxWZXJkaWN0UmVzcG9uc2USMAoHdmVyZGljdBgBIAEoCzIfLm5vbW9zLmtlcm5lbC52MS5SZWZ1c2FsVmVyZGljdCJ1CiJQcm92ZUNvbXBhY3Rpb25FcXVpdmFsZW5jZVJlc3BvbnNlEjgKCGV2aWRlbmNlGAEgASgLMiYubm9tb3Mua2VybmVsLnYxLkNvbXBhY3Rpb25FcXVpdmFsZW5jZRIVCg1ldmlkZW5jZV91c2RhGAIgASgMIi8KEFJlYWRCbG9iUmVzcG9uc2USDQoFZm91bmQYASABKAgSDAoEYmxvYhgCIAEoDCIuChJSZXNvbHZlUmVmUmVzcG9uc2USEAoDb2lkGAEgASgJSACIAQFCBgoEX29pZCIrCglSZWZSZWNvcmQSEQoJcmVmZXJlbmNlGAEgASgJEgsKA29pZBgCIAEoCSI8ChBMaXN0UmVmc1Jlc3BvbnNlEigKBHJlZnMYASADKAsyGi5ub21vcy5rZXJuZWwudjEuUmVmUmVjb3JkIg4KDEFja25vd2xlZGdlZCImChdXcml0ZU1ldGFDb21taXRSZXNwb25zZRILCgNvaWQYASABKAkigwEKFkxhd0Nsb3N1cmVJbmZvUmVzcG9uc2USEAoIaWRlbnRpdHkYASABKAkSGQoRcm9vdF9sb2dpY2FsX3BhdGgYAiABKAkSEwoLYXNzZXRfY291bnQYAyABKAQSEgoKcHJpbV9jb3VudBgEIAEoBBITCgtkb21haW5fa2V5cxgFIAMoCSLfAwoYQ2hlY2twb2ludEV4cG9ydFJlc3BvbnNlEg0KBWVtcHR5GAEgASgIEhMKBmN1cnNvchgCIAEoCUgAiAEBEhAKCGZyb250aWVyGAMgASgMEhcKCnN0YXRlX3Jvb3QYBCABKAlIAYgBARISCgpzdGF0ZV90cmVlGAUgASgIEg4KBnBpbm5lZBgGIAEoCBIbChNyZWFkX2luZGV4X3NuYXBzaG90GAcgASgIEiMKG3JlYWRfaW5kZXhfc25hcHNob3RfcGVuZGluZxgIIAEoCBIkChdyZWFkX2luZGV4X3NxbGl0ZV9ieXRlcxgJIAEoBEgCiAEBEiUKGHJlYWRfaW5kZXhfY3VzdG9keV9ieXRlcxgKIAEoBEgDiAEBElAKGXZlcmlmaWVkX2Zyb250aWVyX3JlY2VpcHQYCyABKAsyKC5ub21vcy5rZXJuZWwudjEuVmVyaWZpZWRGcm9udGllclJlY2VpcHRIBIgBAUIJCgdfY3Vyc29yQg0KC19zdGF0ZV9yb290QhoKGF9yZWFkX2luZGV4X3NxbGl0ZV9ieXRlc0IbChlfcmVhZF9pbmRleF9jdXN0b2R5X2J5dGVzQhwKGl92ZXJpZmllZF9mcm9udGllcl9yZWNlaXB0IusCChhDaGVja3BvaW50SW1wb3J0UmVzcG9uc2USEAoIcmVzdG9yZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESFwoPZnJvbnRpZXJfc2VlZGVkGAMgASgIEiUKHWZyb250aWVyX3ZlcmlmaWNhdGlvbl9wZW5kaW5nGAQgASgIEhcKD2FnZ3JlZ2F0ZV9jb3VudBgFIAEoBBIrCgVzcGFucxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBITCgZjdXJzb3IYByABKAlIAYgBARIRCglyZWFkX29ubHkYCCABKAgSFwoPbGF6eV9yZWFkX2luZGV4GAkgASgIEjcKCWFzc3VyYW5jZRgKIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlEhIKCnJlYWRfcmVhZHkYCyABKAhCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIsABChRPcGVuR2l0U3RhdGVSZXNwb25zZRIOCgZvcGVuZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESFwoPYWdncmVnYXRlX2NvdW50GAMgASgEEisKBXNwYW5zGAQgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EhMKBmN1cnNvchgFIAEoCUgBiAEBEhIKCnJlYWRfcmVhZHkYBiABKAhCCQoHX3JlYXNvbkIJCgdfY3Vyc29yIukBChtBdHRhY2hMb2NhbEZyb250aWVyUmVzcG9uc2USEAoIYXR0YWNoZWQYASABKAgSEwoGcmVhc29uGAIgASgJSACIAQESDAoEaGVhZBgDIAEoCRISCgpzdGF0ZV9yb290GAQgASgJEhcKD2FnZ3JlZ2F0ZV9jb3VudBgFIAEoBBIrCgVzcGFucxgGIAEoCzIcLm5vbW9zLmtlcm5lbC52MS5Ob21vc1N0cnVjdBISCgpyZWFkX3JlYWR5GAcgASgIEhwKFGZvcmVpZ25fc291cmNlX3JlYWR5GAggASgIQgkKB19yZWFzb24iMQocUmVsZWFzZVdvcmtzcGFjZVN0YXRlUmVxdWVzdBIRCgl3b3Jrc3BhY2UYASABKAkiMQodUmVsZWFzZVdvcmtzcGFjZVN0YXRlUmVzcG9uc2USEAoIcmVsZWFzZWQYASABKAgiiwEKHFJlYWRDdXN0b2R5UGxhY2VtZW50UmVzcG9uc2USFQoIZnJvbnRpZXIYASABKAlIAIgBARI8CgZwb2xpY3kYAiABKAsyJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFBvbGljeUgBiAEBQgsKCV9mcm9udGllckIJCgdfcG9saWN5Il0KEFBsYWNlbWVudEFkb3B0ZWQSEAoIZnJvbnRpZXIYASABKAkSNwoGcG9saWN5GAIgASgLMicubm9tb3Mua2VybmVsLnYxLkN1c3RvZHlQbGFjZW1lbnRQb2xpY3kiWgofSW5zcGVjdEN1c3RvZHlQbGFjZW1lbnRSZXNwb25zZRI3CgZwb2xpY3kYASABKAsyJy5ub21vcy5rZXJuZWwudjEuQ3VzdG9keVBsYWNlbWVudFBvbGljeSJKChdDYXBhY2l0eVJlc2VydmVSZXNwb25zZRIXCg9hZ2dyZWdhdGVfY291bnQYASABKAQSFgoOcmVzZXJ2ZWRfYnl0ZXMYAiABKAQi+QIKEFJlc3RvcmVNYWluU3BhbnMSEAoIdG90YWxfdXMYASABKAQSGgoSbGl2ZV9yZWZfbG9va3VwX3VzGAIgASgEEhgKEHRhcmdldF9kZWNvZGVfdXMYAyABKAQSJAocY3VzdG9keV9jb21wbGV0ZW5lc3NfcmVhZF91cxgEIAEoBBIZChFxdWFyYW50aW5lX3JlZl91cxgFIAEoBBIlCh1jaGFpbl9zaWduYXR1cmVfbGF3X3JlcGxheV91cxgGIAEoBBIZChF2ZXJkaWN0X2RlY29kZV91cxgHIAEoBBIjChtwcm9tb3RlX2FuZF9jbGVhbnVwX3JlZnNfdXMYCCABKAQSGwoTZnJvbnRpZXJfcmVidWlsZF91cxgJIAEoBBIZChFmcm9udGllcl9zdG9yZV91cxgKIAEoBBI9Cgx2ZXJpZmljYXRpb24YCyABKAsyJy5ub21vcy5rZXJuZWwudjEuVmVyaWZ5Q2hhaW5EaWFnbm9zdGljcyLvAQoTUmVzdG9yZU1haW5SZXNwb25zZRIMCgRoZWFkGAEgASgJEhAKCHZlcmlmaWVkGAIgASgIEgwKBHdhbGsYAyABKAkSMAoFc3BhbnMYBCABKAsyIS5ub21vcy5rZXJuZWwudjEuUmVzdG9yZU1haW5TcGFucxItCgd2ZXJkaWN0GAUgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0EjcKCWFzc3VyYW5jZRgGIAEoDjIkLm5vbW9zLmtlcm5lbC52MS5DaGVja3BvaW50QXNzdXJhbmNlEhAKCGFjY2VwdGVkGAcgASgIIpsCCgpOb21vc1ZhbHVlEiUKBG51bGwYASABKAsyFS5ub21vcy5rZXJuZWwudjEuTnVsbEgAEhEKB2Jvb2xlYW4YAiABKAhIABIYCg5zaWduZWRfaW50ZWdlchgDIAEoEkgAEhoKEHVuc2lnbmVkX2ludGVnZXIYBCABKARIABIYCg5mbG9hdGluZ19wb2ludBgFIAEoAUgAEg4KBHRleHQYBiABKAlIABIPCgVieXRlcxgHIAEoDEgAEioKBGxpc3QYCCABKAsyGi5ub21vcy5rZXJuZWwudjEuTm9tb3NMaXN0SAASLgoGb2JqZWN0GAkgASgLMhwubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0SABCBgoEa2luZCIGCgROdWxsIjgKCU5vbW9zTGlzdBIrCgZ2YWx1ZXMYASADKAsyGy5ub21vcy5rZXJuZWwudjEuTm9tb3NWYWx1ZSKTAQoLTm9tb3NTdHJ1Y3QSOAoGZmllbGRzGAEgAygLMigubm9tb3Mua2VybmVsLnYxLk5vbW9zU3RydWN0LkZpZWxkc0VudHJ5GkoKC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRIqCgV2YWx1ZRgCIAEoCzIbLm5vbW9zLmtlcm5lbC52MS5Ob21vc1ZhbHVlOgI4ASI6Cg9IaXN0b3J5UmVxdWlyZWQSEQoJd29ya3NwYWNlGAEgASgJEhQKDHVudGlsX2NvbW1pdBgCIAEoCSJAChVMYXdQcmVwYXJhdGlvblVuaXRTZXQSJwoFdW5pdHMYASADKAsyGC5ub21vcy5rZXJuZWwudjEuTGF3VW5pdCJNChBQcmVwYXJlZExhd0xheWVyEg0KBWlucHV0GAEgASgJEgsKA2tleRgCIAEoCRINCgVsYXllchgDIAEoDBIOCgZzaGEyNTYYBCABKAki6AIKGVByZXBhcmVMYXdQcm9kdWN0c1JlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBI5Cgl1bml0X3NldHMYAiADKAsyJi5ub21vcy5rZXJuZWwudjEuTGF3UHJlcGFyYXRpb25Vbml0U2V0Ej0KCGV4cGVjdGVkGAMgASgLMisubm9tb3Mua2VybmVsLnYxLlByZXBhcmVMYXdQcm9kdWN0c1Jlc3BvbnNlEjEKD2NhbmRpZGF0ZV91bml0cxgEIAMoCzIYLm5vbW9zLmtlcm5lbC52MS5MYXdVbml0EhUKDWNvdmVyYWdlX29ubHkYBSABKAgSFQoNY3VzdG9keV9oZWFkcxgGIAMoCRI+Cgtkb21haW5fcGxhbhgHIAEoCzIpLm5vbW9zLmtlcm5lbC52MS5SZXNvbHZlRG9tYWluUGxhblJlcXVlc3QiyAEKGlByZXBhcmVMYXdQcm9kdWN0c1Jlc3BvbnNlEhkKEWtlcm5lbF9nZW5lcmF0aW9uGAEgASgJEhEKCXVuaXRfc2V0cxgCIAMoCRIYChBwcmVwYXJhdGlvbl9rZXlzGAMgAygJEjEKBmxheWVycxgEIAMoCzIhLm5vbW9zLmtlcm5lbC52MS5QcmVwYXJlZExhd0xheWVyEhMKC2Rlcml2YXRpb25zGAUgASgEEhoKEnByZXBhcmF0aW9uX21pY3JvcxgGIAEoBCKIAQodUmVjb3ZlckRldGFjaGVkUmVjZWlwdFJlcXVlc3QSMAoGdGFyZ2V0GAEgASgLMiAubm9tb3Mua2VybmVsLnYxLldvcmtzcGFjZVRhcmdldBI1CgZjaGFuZ2UYAiABKAsyJS5ub21vcy5rZXJuZWwudjEuRGV0YWNoZWRTaWduZWRDaGFuZ2UqbgoPTGF3VmVyc2lvbk9yZGVyEiEKHUxBV19WRVJTSU9OX09SREVSX1VOU1BFQ0lGSUVEEAASGwoXTEFXX1ZFUlNJT05fT1JERVJfRVFVQUwQARIbChdMQVdfVkVSU0lPTl9PUkRFUl9MT1dFUhACKuoBChJCaXJ0aE91dGNvbWVTdGF0dXMSJAogQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5TUEVDSUZJRUQQABIdChlCSVJUSF9PVVRDT01FX1NUQVRVU19CT1JOEAESIQodQklSVEhfT1VUQ09NRV9TVEFUVVNfREVGRVJSRUQQAhIfChtCSVJUSF9PVVRDT01FX1NUQVRVU19GQUlMRUQQAxIgChxCSVJUSF9PVVRDT01FX1NUQVRVU19SRUZVU0VEEAQSKQolQklSVEhfT1VUQ09NRV9TVEFUVVNfVU5XQVJSQU5URURfQ0VSVBAFKswUChFLZXJuZWxSZWZ1c2FsQ29kZRIjCh9LRVJORUxfUkVGVVNBTF9DT0RFX1VOU1BFQ0lGSUVEEAASJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9CQURfU0lHTkFUVVJFEAESJAogS0VSTkVMX1JFRlVTQUxfQ09ERV9VTkFVVEhPUklaRUQQAhInCiNLRVJORUxfUkVGVVNBTF9DT0RFX1BPTElDWV9ESVNBQkxFRBADEioKJktFUk5FTF9SRUZVU0FMX0NPREVfVU5DRVJUSUZJRURfUE9MSUNZEAQSIwofS0VSTkVMX1JFRlVTQUxfQ09ERV9SRUZFUkVOVElBTBAFEi8KK0tFUk5FTF9SRUZVU0FMX0NPREVfUE9JTlRfU1RBVEVfVU5BVkFJTEFCTEUQBhIkCiBLRVJORUxfUkVGVVNBTF9DT0RFX0NBUF9FWENFRURFRBAHEi0KKUtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQX0NPVU5UX1VOQVZBSUxBQkxFEAgSKQolS0VSTkVMX1JFRlVTQUxfQ09ERV9FVklERU5DRV9VTkJBQ0tFRBAJEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfT1JQSEFOX1JFQ0VJUFQQChI2CjJLRVJORUxfUkVGVVNBTF9DT0RFX1JFQ0VJUFRfT05fVEVSTUlOQUxfT0JMSUdBVElPThALEiIKHktFUk5FTF9SRUZVU0FMX0NPREVfTk9UX01JTlRFRBAMEigKJEtFUk5FTF9SRUZVU0FMX0NPREVfRE9NQUlOX0xJRkVDWUNMRRANEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfVFlQRV9UQUdfTUlTTUFUQ0gQDhIsCihLRVJORUxfUkVGVVNBTF9DT0RFX1JFVElSRURfUkVBRF9TVVJGQUNFEA8SMAosS0VSTkVMX1JFRlVTQUxfQ09ERV9DUk9TU19XT1JLU1BBQ0VfREVDTElORUQQEBIrCidLRVJORUxfUkVGVVNBTF9DT0RFX0FHR1JFR0FURV9JTlZBUklBTlQQERIrCidLRVJORUxfUkVGVVNBTF9DT0RFX1dPUktTUEFDRV9JTlZBUklBTlQQEhIuCipLRVJORUxfUkVGVVNBTF9DT0RFX0NBUFRVUkVEX1JFQURfQ09ORkxJQ1QQExIyCi5LRVJORUxfUkVGVVNBTF9DT0RFX0NPTkZMSUNUX1NOQVBTSE9UX1JFUVVJUkVEEBQSNAowS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9VTkRFQ0xBUkVEEBUSMQotS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9JTlZBTElEEBYSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9DT05GTElDVF9TTkFQU0hPVF9TVEFMRRAXEjAKLEtFUk5FTF9SRUZVU0FMX0NPREVfQ0FQVFVSRURfUkVBRF9VTkRFQ0xBUkVEEBgSLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9DQVBUVVJFRF9SRUFEX1BSSVZBVEUQGRIwCixLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfVU5ERUNMQVJFRBAaEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNURURfUkVBRF9VTlRSVVNURURfS0VZEBsSNgoyS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1VOVFJVU1RFRF9TT1VSQ0UQHBIsCihLRVJORUxfUkVGVVNBTF9DT0RFX0FUVEVTVEVEX1JFQURfRk9SR0VEEB0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX1NUQUxFEB4SLgoqS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX09WRVJTSVpFEB8SNwozS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RFRF9SRUFEX0RJU0hPTk9SRURfU09VUkNFECASNQoxS0VSTkVMX1JFRlVTQUxfQ09ERV9FUVVJVk9DQVRJT05fRVZJREVOQ0VfSU5WQUxJRBAhEjMKL0tFUk5FTF9SRUZVU0FMX0NPREVfQVRURVNUQVRJT05fUkVDRUlQVF9JTlZBTElEECISKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfUk9TVEVSX01JU01BVENIECMSLworS0VSTkVMX1JFRlVTQUxfQ09ERV9LRVlfRVBPQ0hfTk9UX01PTk9UT05JQxAkEikKJUtFUk5FTF9SRUZVU0FMX0NPREVfV1JJVEVfRVBPQ0hfU1RBTEUQJRItCilLRVJORUxfUkVGVVNBTF9DT0RFX0VOVkVMT1BFX1NJRF9NSVNNQVRDSBAmEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfUkVWT0tFRF9NRU1CRVJfUkVTVVJSRUNURUQQJxIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX0ZPUkdFRF9QUklOQ0lQQUwQKBIoCiRLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX0tFWV9BTkNIT1IQKRImCiJLRVJORUxfUkVGVVNBTF9DT0RFX09XTkVEX1JFQ09WRVJZECoSLAooS0VSTkVMX1JFRlVTQUxfQ09ERV9TVVJGQUNFRF9CQVNJU19BSEVBRBArEjIKLktFUk5FTF9SRUZVU0FMX0NPREVfU0lHTkVSX0VQT0NIX09VVF9PRl9XSU5ET1cQLBImCiJLRVJORUxfUkVGVVNBTF9DT0RFX0VWT0xWRV9SRUZVU0VEEC0SKwonS0VSTkVMX1JFRlVTQUxfQ09ERV9BVFRFU1RBVElPTl9JTlZBTElEEC4SLQopS0VSTkVMX1JFRlVTQUxfQ09ERV9QQVJFTlRfRElEX05PVF9BVFRFU1QQLxIpCiVLRVJORUxfUkVGVVNBTF9DT0RFX0NFUlRfQ0hBSU5fQlJPS0VOEDASKgomS0VSTkVMX1JFRlVTQUxfQ09ERV9OT1RfUk9PVEVEX0FUX1JPT1QQMRIqCiZLRVJORUxfUkVGVVNBTF9DT0RFX0RFTEVHQVRJT05fSU5WQUxJRBAyEiUKIUtFUk5FTF9SRUZVU0FMX0NPREVfUExBTl9SRUpFQ1RFRBAzEiYKIktFUk5FTF9SRUZVU0FMX0NPREVfRE9NQUlOX1JFRlVTRUQQNBIxCi1LRVJORUxfUkVGVVNBTF9DT0RFX0lOVkFSSUFOVF9FWEVDVVRJT05fRkFVTFQQNRI1CjFLRVJORUxfUkVGVVNBTF9DT0RFX0NIRUNLUE9JTlRfU0lHTkVSX1VOQVZBSUxBQkxFEDYSKAokS0VSTkVMX1JFRlVTQUxfQ09ERV9PRkZFUl9CQVNFX1NUQUxFEDcSJQohS0VSTkVMX1JFRlVTQUxfQ09ERV9CSVJUSF9SRUZVU0VEEDgq7wIKEEZ1bGxSZXN1bHRSZWFzb24SIgoeRlVMTF9SRVNVTFRfUkVBU09OX1VOU1BFQ0lGSUVEEAASHgoaRlVMTF9SRVNVTFRfUkVBU09OX05PX0JBU0UQARIiCh5GVUxMX1JFU1VMVF9SRUFTT05fTEFXX0NIQU5HRUQQAhItCilGVUxMX1JFU1VMVF9SRUFTT05fUkVBRF9BVVRIT1JJVFlfQ0hBTkdFRBADEikKJUZVTExfUkVTVUxUX1JFQVNPTl9QRVJfUkVDT1JEX1JFRlVTQUwQBBIjCh9GVUxMX1JFU1VMVF9SRUFTT05fT1JERVJFRF9SRUFEEAUSJgoiRlVMTF9SRVNVTFRfUkVBU09OX1RFTVBPUkFMX0ZJRUxEUxAGEicKI0ZVTExfUkVTVUxUX1JFQVNPTl9CQVNFX1VOQVZBSUxBQkxFEAcSIwofRlVMTF9SRVNVTFRfUkVBU09OX0xFR0FDWV9TVEFURRAIKskBChNJbnRlcmZhY2VNZW1iZXJLaW5kEiUKIUlOVEVSRkFDRV9NRU1CRVJfS0lORF9VTlNQRUNJRklFRBAAEiAKHElOVEVSRkFDRV9NRU1CRVJfS0lORF9ET01BSU4QARIjCh9JTlRFUkZBQ0VfTUVNQkVSX0tJTkRfRElSRUNUSVZFEAISIwofSU5URVJGQUNFX01FTUJFUl9LSU5EX0FHR1JFR0FURRADEh8KG0lOVEVSRkFDRV9NRU1CRVJfS0lORF9GSUVMRBAEKogCChxJbnRlcmZhY2VDb21wYXRpYmlsaXR5U3RhdHVzEi4KKklOVEVSRkFDRV9DT01QQVRJQklMSVRZX1NUQVRVU19VTlNQRUNJRklFRBAAEigKJElOVEVSRkFDRV9DT01QQVRJQklMSVRZX1NUQVRVU19FWEFDVBABEi0KKUlOVEVSRkFDRV9DT01QQVRJQklMSVRZX1NUQVRVU19DT01QQVRJQkxFEAISLgoqSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfU1RBVFVTX1VOQVZBSUxBQkxFEAMSLworSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfU1RBVFVTX0lOQ09NUEFUSUJMRRAEKsMDChxJbnRlcmZhY2VDb21wYXRpYmlsaXR5UmVhc29uEi4KKklOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9VTlNQRUNJRklFRBAAEjEKLUlOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9ET01BSU5fTUlTU0lORxABEjEKLUlOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9NRU1CRVJfTUlTU0lORxACEjAKLElOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9GSUVMRF9NSVNTSU5HEAMSNQoxSU5URVJGQUNFX0NPTVBBVElCSUxJVFlfUkVBU09OX1ZBTFVFX0tJTkRfQ0hBTkdFRBAEEjcKM0lOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9SRVFVSVJFRF9JTlBVVF9BRERFRBAFEjEKLUlOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9NQVRSSVhfSU5WQUxJRBAGEjgKNElOVEVSRkFDRV9DT01QQVRJQklMSVRZX1JFQVNPTl9XSVJFX0NPTlRSQUNUX0NIQU5HRUQQByq3AgoQTWFpbnRlbmFuY2VQaGFzZRIhCh1NQUlOVEVOQU5DRV9QSEFTRV9VTlNQRUNJRklFRBAAEiQKIE1BSU5URU5BTkNFX1BIQVNFX1JFQURfRE9DVU1FTlRTEAESIgoeTUFJTlRFTkFOQ0VfUEhBU0VfU1FMSVRFX0lOREVYEAISJgoiTUFJTlRFTkFOQ0VfUEhBU0VfQ09NTUFORF9GUk9OVElFUhADEiMKH01BSU5URU5BTkNFX1BIQVNFX0NPTU1BTkRfUk9VVEUQBBIhCh1NQUlOVEVOQU5DRV9QSEFTRV9HSVRfQ1VTVE9EWRAFEiYKIk1BSU5URU5BTkNFX1BIQVNFX1JFQURfSU5ERVhfQ0FDSEUQBhIeChpNQUlOVEVOQU5DRV9QSEFTRV9DT01QTEVURRAHKooBCg9WZXJpZnlDaGFpbldhbGsSIQodVkVSSUZZX0NIQUlOX1dBTEtfVU5TUEVDSUZJRUQQABIaChZWRVJJRllfQ0hBSU5fV0FMS19GVUxMEAESHAoYVkVSSUZZX0NIQUlOX1dBTEtfU1VGRklYEAISGgoWVkVSSUZZX0NIQUlOX1dBTEtfTUVNTxADKnAKGEVmZmVjdEV4ZWN1dGlvblBsYWNlbWVudBIqCiZFRkZFQ1RfRVhFQ1VUSU9OX1BMQUNFTUVOVF9VTlNQRUNJRklFRBAAEigKJEVGRkVDVF9FWEVDVVRJT05fUExBQ0VNRU5UX0NVU1RPRElBThABKnYKGkVmZmVjdEV4ZWN1dGlvbkNhcmRpbmFsaXR5EiwKKEVGRkVDVF9FWEVDVVRJT05fQ0FSRElOQUxJVFlfVU5TUEVDSUZJRUQQABIqCiZFRkZFQ1RfRVhFQ1VUSU9OX0NBUkRJTkFMSVRZX1NJTkdMRVRPThABKrcBChdNb2RlbExpZmVjeWNsZU9wZXJhdGlvbhIpCiVNT0RFTF9MSUZFQ1lDTEVfT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASJQohTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9JTlNUQUxMEAESIwofTU9ERUxfTElGRUNZQ0xFX09QRVJBVElPTl9TVEFHRRACEiUKIU1PREVMX0xJRkVDWUNMRV9PUEVSQVRJT05fUFJPTU9URRADKtwBCh1DaGlsZFdvcmtzcGFjZUxpZmVjeWNsZVN0YXR1cxIwCixDSElMRF9XT1JLU1BBQ0VfTElGRUNZQ0xFX1NUQVRVU19VTlNQRUNJRklFRBAAEisKJ0NISUxEX1dPUktTUEFDRV9MSUZFQ1lDTEVfU1RBVFVTX0FDVElWRRABEiwKKENISUxEX1dPUktTUEFDRV9MSUZFQ1lDTEVfU1RBVFVTX1JFVElSRUQQAhIuCipDSElMRF9XT1JLU1BBQ0VfTElGRUNZQ0xFX1NUQVRVU19SRUNMQUlNRUQQAyr4AQoiRGVjbGFyZWRBdXRoZW50aWNhdGlvblByb3ZpZGVyS2luZBI1CjFERUNMQVJFRF9BVVRIRU5USUNBVElPTl9QUk9WSURFUl9LSU5EX1VOU1BFQ0lGSUVEEAASMgouREVDTEFSRURfQVVUSEVOVElDQVRJT05fUFJPVklERVJfS0lORF9TRUxFQ1RFRBABEjIKLkRFQ0xBUkVEX0FVVEhFTlRJQ0FUSU9OX1BST1ZJREVSX0tJTkRfRU5ST0xMRUQQAhIzCi9ERUNMQVJFRF9BVVRIRU5USUNBVElPTl9QUk9WSURFUl9LSU5EX1NPVkVSRUlHThADKooBChVEZWNsYXJlZExhd01lbWJlcktpbmQSKAokREVDTEFSRURfTEFXX01FTUJFUl9LSU5EX1VOU1BFQ0lGSUVEEAASJAogREVDTEFSRURfTEFXX01FTUJFUl9LSU5EX0NPTU1BTkQQARIhCh1ERUNMQVJFRF9MQVdfTUVNQkVSX0tJTkRfUkVBRBACKosGCh9Qcm92aWRlclRva2VuVmVyaWZpY2F0aW9uU3RhdHVzEjIKLlBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TUEVDSUZJRUQQABIsCihQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX1ZBTElEEAESNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19OT19NQVRDSElOR19LRVkQAhIuCipQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0VYUElSRUQQAxI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PVF9ZRVRfVkFMSUQQBBI2CjJQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0lTU1VFUl9NSVNNQVRDSBAFEjgKNFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfQVVESUVOQ0VfTUlTTUFUQ0gQBhI0CjBQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX0JBRF9TSUdOQVRVUkUQBxIwCixQUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX01BTEZPUk1FRBAIEjwKOFBST1ZJREVSX1RPS0VOX1ZFUklGSUNBVElPTl9TVEFUVVNfVU5TVVBQT1JURURfQUxHT1JJVEhNEAkSLgoqUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19CQURfS0VZEAoSNgoyUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1NVQkpFQ1QQCxIyCi5QUk9WSURFUl9UT0tFTl9WRVJJRklDQVRJT05fU1RBVFVTX05PX1ZFUklGSUVSEAwSNAowUFJPVklERVJfVE9LRU5fVkVSSUZJQ0FUSU9OX1NUQVRVU19NSVNTSU5HX1RPS0VOEA0qyAEKEkRldmljZVNpZ25lclN0YXR1cxIkCiBERVZJQ0VfU0lHTkVSX1NUQVRVU19VTlNQRUNJRklFRBAAEh8KG0RFVklDRV9TSUdORVJfU1RBVFVTX0FDVElWRRABEh8KG0RFVklDRV9TSUdORVJfU1RBVFVTX0FCU0VOVBACEiAKHERFVklDRV9TSUdORVJfU1RBVFVTX1JFVk9LRUQQAxIoCiRERVZJQ0VfU0lHTkVSX1NUQVRVU19LRVlfVU5BVkFJTEFCTEUQBCrXAQoTQmlydGhFdmlkZW5jZVN0YXR1cxIlCiFCSVJUSF9FVklERU5DRV9TVEFUVVNfVU5TUEVDSUZJRUQQABImCiJCSVJUSF9FVklERU5DRV9TVEFUVVNfTk9UX1JFUVVJUkVEEAESHwobQklSVEhfRVZJREVOQ0VfU1RBVFVTX1JFQURZEAISLQopQklSVEhfRVZJREVOQ0VfU1RBVFVTX0RFTEVHQVRJT05fUkVRVUlSRUQQAxIhCh1CSVJUSF9FVklERU5DRV9TVEFUVVNfSU5WQUxJRBAEKrIBChFRdWVyeVJlc3VsdEZvcm1hdBIjCh9RVUVSWV9SRVNVTFRfRk9STUFUX1VOU1BFQ0lGSUVEEAASJAogUVVFUllfUkVTVUxUX0ZPUk1BVF9MRUdBQ1lfVkFMVUUQARIkCiBRVUVSWV9SRVNVTFRfRk9STUFUX05PTUlOQUxfVVNEQRACEiwKKFFVRVJZX1JFU1VMVF9GT1JNQVRfQVBQTElDQVRJT05fUFJPVE9CVUYQAyqVDAoOUXVlcnlPcGVyYXRpb24SHwobUVVFUllfT1BFUkFUSU9OX1VOU1BFQ0lGSUVEEAASHAoYUVVFUllfT1BFUkFUSU9OX0VYVFJFTVVNEAESIAocUVVFUllfT1BFUkFUSU9OX1JFQURfUE9TVFVSRRAEEh8KG1FVRVJZX09QRVJBVElPTl9DVVJSRU5UX0xBVxAFEiMKH1FVRVJZX09QRVJBVElPTl9JTlRFUkZBQ0VfT0ZGRVIQBhInCiNRVUVSWV9PUEVSQVRJT05fUkVMQVRJT05fR0FURV9PRkZFUhAHEh0KGVFVRVJZX09QRVJBVElPTl9TQ0VORV9MQVcQCBIhCh1RVUVSWV9PUEVSQVRJT05fSU5TVEFMTEVEX0xBVxAJEhwKGFFVRVJZX09QRVJBVElPTl9ERVNDUklCRRAKEiMKH1FVRVJZX09QRVJBVElPTl9LRVJORUxfUkVTT1VSQ0UQCxIjCh9RVUVSWV9PUEVSQVRJT05fREVWRUxPUEVSX1NQQU5TEAwSKQolUVVFUllfT1BFUkFUSU9OX0RFQ0xBUkVEX0NBUEFCSUxJVElFUxANEh0KGVFVRVJZX09QRVJBVElPTl9SRUFESU5FU1MQDhIkCiBRVUVSWV9PUEVSQVRJT05fUFJPSkVDVElPTl9TVEFUUxAPEiUKIVFVRVJZX09QRVJBVElPTl9NRU1PUllfRFJPUF9QUk9CRRAQEhgKFFFVRVJZX09QRVJBVElPTl9XQVJNEBESGwoXUVVFUllfT1BFUkFUSU9OX1JFRlJFU0gQEhIgChxRVUVSWV9PUEVSQVRJT05fVkVSSUZZX0NIQUlOEBMSIgoeUVVFUllfT1BFUkFUSU9OX0NPVU5URVJGQUNUVUFMEBQSGQoVUVVFUllfT1BFUkFUSU9OX1JPVVRFEBUSJQohUVVFUllfT1BFUkFUSU9OX0NSWVBUT19TRUFMX0ZJRUxEEBgSLAooUVVFUllfT1BFUkFUSU9OX0NSWVBUT19CTElORF9JTkRFWF9UT0tFThAZEioKJlFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfU0NPUEVfS0VZEBoSLworUVVFUllfT1BFUkFUSU9OX0NSWVBUT19PV05FRF9ERVZJQ0VfUkVRVUVTVBAbEjEKLVFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfUFJFUEFSRV9BUFBST1ZBTBAcEjEKLVFVRVJZX09QRVJBVElPTl9DUllQVE9fT1dORURfUFJFUEFSRV9SRUNPVkVSWRAdEiAKHFFVRVJZX09QRVJBVElPTl9SRUNFSVBUX1BBVEgQIhIdChlRVUVSWV9PUEVSQVRJT05fQ0VSVF9TSUdOECMSJQohUVVFUllfT1BFUkFUSU9OX0JJUlRIX1RSVVNUX1NUQVRFECQSIQodUVVFUllfT1BFUkFUSU9OX0VSQV9DRVJUX1NJR04QJRIoCiRRVUVSWV9PUEVSQVRJT05fREVMRUdBVElPTl9DRVJUX1NJR04QJhIpCiVRVUVSWV9PUEVSQVRJT05fQ0FOT05JQ0FMSVpFX0ZST05USUVSECcSKwonUVVFUllfT1BFUkFUSU9OX0NBTk9OSUNBTElaRV9QUk9KRUNUSU9OECgiBAgCEAIiBAgDEAMiBAgWEBYiBAgXEBciBAgeEB4iBAgfEB8iBAggECAiBAghECEqIVFVRVJZX09QRVJBVElPTl9QRU5ESU5HX0NPTkZMSUNUUyooUVVFUllfT1BFUkFUSU9OX1BFTkRJTkdfQ09ORkxJQ1RfU1VNTUFSWSoUUVVFUllfT1BFUkFUSU9OX01JTlQqHVFVRVJZX09QRVJBVElPTl9DUllQVE9fS0VZR0VOKh9RVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1dSQVBfS0VZKiFRVUVSWV9PUEVSQVRJT05fQ1JZUFRPX1VOV1JBUF9LRVkqHVFVRVJZX09QRVJBVElPTl9BVVRIT1JfS0VZR0VOKiBRVUVSWV9PUEVSQVRJT05fQVRURVNUQVRJT05fU0lHTiqpAQoZUmVhZFByb2plY3Rpb25TdG9yYWdlS2luZBIsCihSRUFEX1BST0pFQ1RJT05fU1RPUkFHRV9LSU5EX1VOU1BFQ0lGSUVEEAASKQolUkVBRF9QUk9KRUNUSU9OX1NUT1JBR0VfS0lORF9SRVNJREVOVBABEjMKL1JFQURfUFJPSkVDVElPTl9TVE9SQUdFX0tJTkRfRklMRV9CQUNLRURfU0NBTEFSEAIq0gIKFVJlc2lkZW50Q29tcG9uZW50S2luZBInCiNSRVNJREVOVF9DT01QT05FTlRfS0lORF9VTlNQRUNJRklFRBAAEiYKIlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0ZPTERfU1RBVEUQARItCilSRVNJREVOVF9DT01QT05FTlRfS0lORF9SRUFEX01PREVMX1NRTElURRACEi4KKlJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1JFQURfTU9ERUxfSU5ERVhFUxADEi0KKVJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX1NIQVJFRF9BVFRSSUJVVEVEEAQSLAooUkVTSURFTlRfQ09NUE9ORU5UX0tJTkRfV09SS1NQQUNFX0NBQ0hFUxAFEiwKKFJFU0lERU5UX0NPTVBPTkVOVF9LSU5EX0dJVF9PQkpFQ1RfQ0FDSEUQBipsChNLZXJuZWxMYXdDYXBhYmlsaXR5EiUKIUtFUk5FTF9MQVdfQ0FQQUJJTElUWV9VTlNQRUNJRklFRBAAEi4KKktFUk5FTF9MQVdfQ0FQQUJJTElUWV9TVEFHRV9aRVJPX0JPT1RTVFJBUBABKlkKFUNoZWNrcG9pbnRDb21wcmVzc2lvbhIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX05PTkUQABIfChtDSEVDS1BPSU5UX0NPTVBSRVNTSU9OX0daSVAQASqRAQocQ2hlY2twb2ludFZlcmlmaWNhdGlvblBvbGljeRIzCi9DSEVDS1BPSU5UX1ZFUklGSUNBVElPTl9QT0xJQ1lfVkVSSUZZX0NBTk9OSUNBTBAAEjwKOENIRUNLUE9JTlRfVkVSSUZJQ0FUSU9OX1BPTElDWV9UUlVTVF9QUkVWSU9VU0xZX1ZFUklGSUVEEAEqgAEKE0NoZWNrcG9pbnRBc3N1cmFuY2USJAogQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVU5TUEVDSUZJRUQQABIgChxDSEVDS1BPSU5UX0FTU1VSQU5DRV9UUlVTVEVEEAESIQodQ0hFQ0tQT0lOVF9BU1NVUkFOQ0VfVkVSSUZJRUQQAiqJAQoVS2VybmVsUmVzaWRlbmN5SW50ZW50EicKI0tFUk5FTF9SRVNJREVOQ1lfSU5URU5UX1VOU1BFQ0lGSUVEEAASIAocS0VSTkVMX1JFU0lERU5DWV9JTlRFTlRfV0FSTRABEiUKIUtFUk5FTF9SRVNJREVOQ1lfSU5URU5UX09OX0RFTUFORBACKq4BChZDdXN0b2R5UmV0ZW50aW9uSW50ZW50EigKJENVU1RPRFlfUkVURU5USU9OX0lOVEVOVF9VTlNQRUNJRklFRBAAEiMKH0NVU1RPRFlfUkVURU5USU9OX0lOVEVOVF9SRVRBSU4QARIiCh5DVVNUT0RZX1JFVEVOVElPTl9JTlRFTlRfQ0FDSEUQAhIhCh1DVVNUT0RZX1JFVEVOVElPTl9JTlRFTlRfTk9ORRADKqgBChpJbnRlbnRUcmFuc3BvcnRSZXF1aXJlbWVudBIsCihJTlRFTlRfVFJBTlNQT1JUX1JFUVVJUkVNRU5UX1VOU1BFQ0lGSUVEEAASLgoqSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9TRUFMRURfQ0hBTkdFEAESLAooSU5URU5UX1RSQU5TUE9SVF9SRVFVSVJFTUVOVF9DT01NSVRfVFJFRRACKokBChVMaWZlY3ljbGVJbnN0YWxsUGhhc2USJwojTElGRUNZQ0xFX0lOU1RBTExfUEhBU0VfVU5TUEVDSUZJRUQQABIiCh5MSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9BQ1RJVkUQARIjCh9MSUZFQ1lDTEVfSU5TVEFMTF9QSEFTRV9QRU5ESU5HEAIyWQoSTm9tb3NLZXJuZWxTZXJ2aWNlEkMKBENhbGwSHC5ub21vcy5rZXJuZWwudjEuQ2FsbFJlcXVlc3QaHS5ub21vcy5rZXJuZWwudjEuQ2FsbFJlc3BvbnNlYgZwcm90bzM", [file_google_protobuf_any]);
4712
4712
  var CallRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 0);
4713
4713
  var CallResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 1);
4714
4714
  var OfferResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 5);
@@ -4737,53 +4737,54 @@ var NomosRuntimeComponent = (() => {
4737
4737
  var CapturedClockSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 97);
4738
4738
  var BirthCertificateSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 98);
4739
4739
  var SignBirthCertificateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 99);
4740
- var IdentityProviderWitnessAdoptionSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 102);
4741
- var OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 103);
4742
- var QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 109);
4743
- var IdentityProviderWitnessQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 114);
4744
- var ChildWorkspaceQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 118);
4745
- var InstalledLawDeclarationsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 121);
4746
- var DirectiveAuthoringRequirementsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 127);
4747
- var AuthenticationPostureQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 129);
4748
- var QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 136);
4749
- var NomosRefSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 142);
4750
- var ReferenceVersionsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 144);
4751
- var NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 150);
4752
- var FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 151);
4753
- var AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 161);
4754
- var OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 168);
4755
- var SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 169);
4756
- var KernelConfigurationRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 170);
4757
- var CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 172);
4758
- var ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 176);
4759
- var PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 180);
4760
- var ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 181);
4761
- var RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 182);
4762
- var IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 183);
4763
- var HistorySummaryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 184);
4764
- var InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 185);
4765
- var InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 188);
4766
- var ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 191);
4767
- var ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 192);
4768
- var ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 194);
4769
- var WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 195);
4770
- var DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 196);
4771
- var RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 209);
4772
- var LawProductsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 212);
4773
- var ExportLawProductsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 213);
4774
- var ExportLawProductsResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 214);
4775
- var ImportLawProductsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 215);
4776
- var AttachLocalFrontierRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 219);
4777
- var CustodyRemoteSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 220);
4778
- var CustodyPlacementPolicySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 222);
4779
- var CustodyPlacementExpectationSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 223);
4780
- var ReadCustodyPlacementRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 224);
4781
- var InspectCustodyPlacementRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 225);
4782
- var PlacementOfferSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 226);
4783
- var ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 227);
4784
- var ReleaseWorkspaceStateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 255);
4785
- var NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 263);
4786
- var NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 266);
4740
+ var IdentityProviderWitnessAdoptionSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 112);
4741
+ var OfferRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 113);
4742
+ var QueryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 119);
4743
+ var IdentityProviderWitnessQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 124);
4744
+ var ChildWorkspaceQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 128);
4745
+ var InstalledLawDeclarationsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 131);
4746
+ var DirectiveAuthoringRequirementsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 137);
4747
+ var AuthenticationPostureQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 139);
4748
+ var QueryAuthoritySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 146);
4749
+ var NomosRefSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 152);
4750
+ var ReferenceVersionsQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 154);
4751
+ var NamedQuerySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 160);
4752
+ var FrontierTransitionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 161);
4753
+ var AuthorizationCheckRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 171);
4754
+ var OutboxRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 178);
4755
+ var SyncRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 179);
4756
+ var KernelConfigurationRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 180);
4757
+ var CustodyRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 182);
4758
+ var ResidentFootprintRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 186);
4759
+ var PackDeltaRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 190);
4760
+ var ApplyPackRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 191);
4761
+ var RepoStatsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 192);
4762
+ var IntentsAboveRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 193);
4763
+ var HistorySummaryRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 194);
4764
+ var InspectChangeRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 195);
4765
+ var InspectRefusalVerdictRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 198);
4766
+ var ReadBlobRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 201);
4767
+ var ResolveRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 202);
4768
+ var ListRefsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 204);
4769
+ var WriteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 205);
4770
+ var DeleteRefRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 206);
4771
+ var RestoreMainRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 219);
4772
+ var LawProductsSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 222);
4773
+ var ExportLawProductsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 223);
4774
+ var ExportLawProductsResponseSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 224);
4775
+ var ImportLawProductsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 225);
4776
+ var AttachLocalFrontierRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 229);
4777
+ var CustodyRemoteSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 230);
4778
+ var CustodyPlacementPolicySchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 232);
4779
+ var CustodyPlacementExpectationSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 233);
4780
+ var ReadCustodyPlacementRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 234);
4781
+ var InspectCustodyPlacementRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 235);
4782
+ var PlacementOfferSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 236);
4783
+ var ResolveStatePositionRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 237);
4784
+ var ReleaseWorkspaceStateRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 265);
4785
+ var NomosValueSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 273);
4786
+ var NomosStructSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 276);
4787
+ var PrepareLawProductsRequestSchema = /* @__PURE__ */ messageDesc(file_nomos_kernel_v1_kernel, 280);
4787
4788
  var BirthOutcomeStatusSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 1);
4788
4789
  var BirthOutcomeStatus = /* @__PURE__ */ tsEnum(BirthOutcomeStatusSchema);
4789
4790
  var KernelRefusalCodeSchema = /* @__PURE__ */ enumDesc(file_nomos_kernel_v1_kernel, 2);
@@ -6946,6 +6947,27 @@ var NomosRuntimeComponent = (() => {
6946
6947
  return now();
6947
6948
  }
6948
6949
 
6950
+ // ../../adapter/runtime-kernel-port.ts
6951
+ function pendingLawPreparation(request) {
6952
+ const operation = request.operation;
6953
+ const offer = operation.case === "offer" ? operation.value : operation.case === "prepareRemoteOffer" ? fromBinary(OfferRequestSchema, operation.value.offerRequest) : void 0;
6954
+ const custody = operation.case === "custody" ? operation.value.operation : void 0;
6955
+ const custodyTarget = custody?.value && "target" in custody.value && typeof custody.value.target === "object" ? custody.value.target : void 0;
6956
+ const target3 = operation.case === "query" || operation.case === "open" || operation.case === "sync" || operation.case === "outbox" ? operation.value.target : offer?.target ?? custodyTarget;
6957
+ const query = operation.case === "query" ? operation.value.query : void 0;
6958
+ const candidateUnits = offer?.lawUnits ?? (query?.case === "frontierTransition" || query?.case === "interfaceCompatibility" ? query.value.candidateUnits : []);
6959
+ if (target3) return toBinary(
6960
+ PrepareLawProductsRequestSchema,
6961
+ create(PrepareLawProductsRequestSchema, {
6962
+ target: target3,
6963
+ candidateUnits,
6964
+ coverageOnly: true,
6965
+ ...query?.case === "resolveDomainPlan" ? { domainPlan: query.value } : {},
6966
+ custodyHeads: operation.case === "sync" ? [operation.value.toHead].filter(Boolean) : custody?.value && "head" in custody.value && typeof custody.value.head === "string" ? [custody.value.head].filter(Boolean) : []
6967
+ })
6968
+ );
6969
+ }
6970
+
6949
6971
  // ../src/runtime/workspace_call_binding.ts
6950
6972
  var targetFor = (mount) => create(WorkspaceTargetSchema, {
6951
6973
  repo: mount.repositoryPath,
@@ -7404,6 +7426,8 @@ var NomosRuntimeComponent = (() => {
7404
7426
  case "releaseWorkspaceState":
7405
7427
  case "aggregateCensus":
7406
7428
  case "auditCustody":
7429
+ case "recoverDetachedReceipt":
7430
+ case "prepareLawProducts":
7407
7431
  case "exportLawProducts":
7408
7432
  case void 0:
7409
7433
  return UNMOVED;
@@ -7439,6 +7463,8 @@ var NomosRuntimeComponent = (() => {
7439
7463
  var MainMoves = class {
7440
7464
  /** The last head known per workspace; `null` = known to hold no custody. */
7441
7465
  #known = /* @__PURE__ */ new Map();
7466
+ /** A first sighting has not yet emitted any custody obligation. */
7467
+ #baselines = /* @__PURE__ */ new Set();
7442
7468
  #moved;
7443
7469
  constructor(moved) {
7444
7470
  this.#moved = moved;
@@ -7447,13 +7473,28 @@ var NomosRuntimeComponent = (() => {
7447
7473
  known(workspace) {
7448
7474
  return this.#known.get(workspace);
7449
7475
  }
7476
+ /** A physical birth receipt proves this office created custody. A read can
7477
+ * race that receipt and establish a baseline first; promote that baseline to
7478
+ * the one birth move, preserving a newer observed head and ignoring repeats. */
7479
+ born(workspace, head) {
7480
+ if (!workspace || !head) return void 0;
7481
+ const observed = this.#known.get(workspace);
7482
+ if (observed && !this.#baselines.has(workspace)) return void 0;
7483
+ this.#known.set(workspace, null);
7484
+ return this.observe(workspace, observed || head, "offer");
7485
+ }
7450
7486
  /** The kernel named this workspace's main head (`undefined`: no custody). */
7451
7487
  observe(workspace, head, via) {
7452
7488
  if (!workspace) return void 0;
7453
7489
  const next = head || null;
7454
7490
  const previous = this.#known.get(workspace);
7455
7491
  this.#known.set(workspace, next);
7456
- if (previous === void 0 || previous === next) return void 0;
7492
+ if (previous === void 0) {
7493
+ if (next) this.#baselines.add(workspace);
7494
+ return void 0;
7495
+ }
7496
+ if (previous === next) return void 0;
7497
+ this.#baselines.delete(workspace);
7457
7498
  const move = {
7458
7499
  workspace,
7459
7500
  from: previous ?? void 0,
@@ -8002,6 +8043,14 @@ var NomosRuntimeComponent = (() => {
8002
8043
  this.detail = detail;
8003
8044
  }
8004
8045
  };
8046
+ var KernelLawProductsPending = class extends Error {
8047
+ detail;
8048
+ constructor(detail) {
8049
+ super(detail);
8050
+ this.detail = detail;
8051
+ this.name = "KernelLawProductsPending";
8052
+ }
8053
+ };
8005
8054
  var READINESS_DEBT = /foreign-read-not-ready: .*awaits background (maintenance|certification)/;
8006
8055
  var kernelReadinessPending = (message) => {
8007
8056
  if (!READINESS_DEBT.test(message)) return void 0;
@@ -8046,18 +8095,20 @@ var NomosRuntimeComponent = (() => {
8046
8095
  }
8047
8096
  };
8048
8097
  function throwKernelFailure(failure) {
8098
+ if (failure.code === "NMS-LAW-PRODUCTS-PENDING") throw new KernelLawProductsPending(failure.message);
8049
8099
  throwIfKernelControlRequired(failure);
8050
8100
  throw new KernelRefusal(failure);
8051
8101
  }
8052
8102
  var KERNEL_FAILURE_TEXT = /^(NMS-[A-Z0-9]+(?:-[A-Z0-9]+)*): ([\s\S]*)$/;
8053
8103
  var ENVIRONMENTAL = /NMS-KERNEL-TRAP|\btrap\b|unreachable|out of bounds|out of memory|memory allocation|\block\b|File exists|No such file|os error|I\/O|Permission denied|No space|\bE(?:EXIST|NOENT|ACCES|NOSPC|IO|AGAIN|BUSY)\b/i;
8054
8104
  function deterministicKernelRefusal(error) {
8055
- if (error instanceof KernelWorkspaceResidencyRequired || error instanceof KernelHistoryRequired || error instanceof KernelReadinessPending) return void 0;
8105
+ if (error instanceof KernelWorkspaceResidencyRequired || error instanceof KernelHistoryRequired || error instanceof KernelReadinessPending || error instanceof KernelLawProductsPending) return void 0;
8056
8106
  if (error instanceof KernelRefusal && (error.failure.historyRequired !== void 0 || error.failure.identityProviderWitnessRequired !== void 0)) return void 0;
8057
8107
  const text = error instanceof Error ? error.message : typeof error === "string" ? error : "";
8058
8108
  const match = KERNEL_FAILURE_TEXT.exec(text);
8059
8109
  if (!match) return void 0;
8060
8110
  const [, code, message] = match;
8111
+ if (code === "NMS-CUSTODY-INCOMPLETE" || code === "NMS-LAW-PRODUCTS-PENDING") return void 0;
8061
8112
  if (ENVIRONMENTAL.test(text) || READINESS_DEBT.test(message) || requiredForeignWorkspace(message) !== void 0) return void 0;
8062
8113
  return { code, message };
8063
8114
  }
@@ -8412,8 +8463,7 @@ var NomosRuntimeComponent = (() => {
8412
8463
  */
8413
8464
  bornCustodyPersisted(workspace, head) {
8414
8465
  if (!workspace || !head) return;
8415
- if (this.#mainMoves.known(workspace) === void 0) this.#mainMoves.observe(workspace, void 0, "custody");
8416
- this.#mainMoves.observe(workspace, head, "offer");
8466
+ this.#mainMoves.born(workspace, head);
8417
8467
  }
8418
8468
  /** The head of the mounted branch. Main's head, wherever it is found, is reported to the one
8419
8469
  * "main moved" funnel: a head read is how a move made outside this port's calls (recovery on
@@ -9276,6 +9326,10 @@ var NomosRuntimeComponent = (() => {
9276
9326
  operation,
9277
9327
  () => timelineTraceEnabled() ? this.#timedCall(operation, request) : fromBinary(CallResponseSchema, this.#kernel.call(toBinary(CallRequestSchema, request)))
9278
9328
  );
9329
+ if (this.#kernel.enqueueLawPreparation && response.outcome.case === "failure" && response.outcome.value.code === "NMS-LAW-PRODUCTS-PENDING") {
9330
+ const pending = pendingLawPreparation(request);
9331
+ if (pending) this.#kernel.enqueueLawPreparation(pending);
9332
+ }
9279
9333
  } catch (error) {
9280
9334
  this.#attached?.lost();
9281
9335
  const trapped = error instanceof Error && /NMS-KERNEL-TRAP|\btrap\b|unreachable|out of bounds/i.test(error.message);
@@ -10306,14 +10360,39 @@ var NomosRuntimeComponent = (() => {
10306
10360
  WORKSPACE_OPENING_RETRY_AFTER_MILLIS
10307
10361
  );
10308
10362
  }
10309
- if (request.command.case === "syncWorkspace" || request.command.case === "recoverCorrespondence" || request.command.case === "previewLocalCopyDrop" || request.command.case === "dropLocalCopy") {
10363
+ if (request.command.case === "syncWorkspace" || request.command.case === "recoverCorrespondence" || request.command.case === "serveLiveStream" || request.command.case === "previewLocalCopyDrop" || request.command.case === "dropLocalCopy") {
10310
10364
  return yield* this.#settle(resume, workId2, resolving);
10311
10365
  }
10312
10366
  let unreadable;
10313
10367
  if (local.outcome.value.available) {
10314
10368
  const allowUnborn = request.command.case === "kernelCall" && kernelCallPermitsUnbornCustody(request.command.value);
10315
10369
  try {
10316
- this.openLocal(request, workspace, allowUnborn);
10370
+ for (let attempt = 0; ; attempt++) {
10371
+ try {
10372
+ this.openLocal(request, workspace, allowUnborn);
10373
+ break;
10374
+ } catch (error) {
10375
+ if (!(error instanceof KernelLawProductsPending)) throw error;
10376
+ if (attempt === 40) return this.#unavailable(
10377
+ request,
10378
+ RuntimeUnavailableReason.LOCAL_REPLICA_NOT_READY,
10379
+ workspace,
10380
+ "this peer is preparing the workspace law",
10381
+ 250
10382
+ );
10383
+ const receipt = yield { case: "wake", value: create(PeerWakeEffectSchema, {
10384
+ effectId: `${workId2}:${workspace}:law-ready:${attempt}`,
10385
+ delayMillis: 250
10386
+ }) };
10387
+ if (receipt.outcome.case !== "woken") return this.#unavailable(
10388
+ request,
10389
+ RuntimeUnavailableReason.LOCAL_REPLICA_NOT_READY,
10390
+ workspace,
10391
+ "workspace law preparation was interrupted",
10392
+ 250
10393
+ );
10394
+ }
10395
+ }
10317
10396
  } catch (error) {
10318
10397
  if (!(error instanceof WorkspaceLocalCopyUnreadableError)) throw error;
10319
10398
  unreadable = error;
@@ -12138,6 +12217,8 @@ var NomosRuntimeComponent = (() => {
12138
12217
  var RECEIVING_GROUP_ENROLMENT_REFUSED = "nomos.runtime.receiving_group_enrolment_refused";
12139
12218
  var ENROLMENT_ATTEMPTS = 3;
12140
12219
  var ENROLMENT_INITIAL_BACKOFF_MILLIS = 1e3;
12220
+ var ENROLLED_CALL_WAIT_NANOSECONDS = 30000000000n;
12221
+ var ENROLLED_CONVERGENCE_WAIT_NANOSECONDS = 90000000000n;
12141
12222
  var CONSOLE_CREDENTIAL_CODES = /* @__PURE__ */ new Set(["provider_token_invalid", "provider_token_spent", "enrolment_not_admitted"]);
12142
12223
  var ENROLMENT_CREDENTIAL_RETRY_MILLIS = 3e4;
12143
12224
  var LOCAL_COPY_REPAIR_RETRY_MILLIS = 1e3;
@@ -12192,6 +12273,20 @@ var NomosRuntimeComponent = (() => {
12192
12273
  #opening = /* @__PURE__ */ new Set();
12193
12274
  #accounts = /* @__PURE__ */ new Map();
12194
12275
  /** D22: device key hash → the workspaces the console reported this key enrolled in (this process's memory, not truth). */
12276
+ #localBirths = /* @__PURE__ */ new Map();
12277
+ /** Local admission is not proof that the provider has materialised this child. */
12278
+ localBirth(workspace, parent, head, intentId) {
12279
+ this.#localBirths.set(workspace, { parent, head, intentId });
12280
+ }
12281
+ /** A provider birth admission answers after persisting its born children. The
12282
+ * parent's later retention seal is not an enrolment prerequisite. Intent IDs
12283
+ * also correlate admissions whose commits the provider rebased. */
12284
+ providerIntentsAdmitted(parent, intentIds) {
12285
+ const admitted = new Set(intentIds);
12286
+ for (const [child, birth] of this.#localBirths) {
12287
+ if (birth.parent === parent && birth.intentId && admitted.has(birth.intentId)) this.#localBirths.delete(child);
12288
+ }
12289
+ }
12195
12290
  #consoleEnrolments = /* @__PURE__ */ new Map();
12196
12291
  #preparingCalls = /* @__PURE__ */ new Map();
12197
12292
  #sequence = 0;
@@ -12243,6 +12338,10 @@ var NomosRuntimeComponent = (() => {
12243
12338
  /** Only a proven non-admission can enter recovery. Console-enrolled children
12244
12339
  * share the owning application's route, selected by credential capability and
12245
12340
  * principal, never by workspace-name guessing or an unverified payload. */
12341
+ /** A person's pending call needs correspondence through discovery and enrolment convergence. */
12342
+ waitingForAccess(workspace) {
12343
+ return [...this.#preparingCalls.values()].some((call) => call.workspace === workspace && !call.settled);
12344
+ }
12246
12345
  recoverOffer(request, response) {
12247
12346
  if (!this.#ports.call || request.command.case !== "kernelCall" || request.command.value.credentialUse !== CredentialUse.SESSION || request.command.value.request?.operation.case !== "offer" || request.command.value.request.operation.value.intent.case !== "call") return;
12248
12347
  const verdict = signerVerdictOf(response);
@@ -12371,7 +12470,7 @@ var NomosRuntimeComponent = (() => {
12371
12470
  this.#ports.emit(binding.session, purpose === "write" ? { case: "writePreparation", value: create(WritePreparationSchema, observation) } : { case: "readAccessPreparation", value: create(ReadAccessPreparationSchema, observation) });
12372
12471
  const key = JSON.stringify([binding.credentialCapability, principal, binding.workspace]);
12373
12472
  const shared = this.#preparingCalls.get(key);
12374
- const deadline = this.#ports.clock.monotonicNanoseconds() + 30000000000n;
12473
+ const enrolmentDeadline = this.#ports.clock.monotonicNanoseconds() + ENROLLED_CALL_WAIT_NANOSECONDS;
12375
12474
  let wake = 0;
12376
12475
  const blocked = this.#copyBlocks(binding, request.requestId);
12377
12476
  if (blocked) return ended(blocked);
@@ -12379,7 +12478,7 @@ var NomosRuntimeComponent = (() => {
12379
12478
  while (!shared.settled) {
12380
12479
  const blockedNow = this.#copyBlocks(binding, request.requestId);
12381
12480
  if (blockedNow) return ended(blockedNow);
12382
- if (this.#ports.clock.monotonicNanoseconds() >= deadline) return ended("waiting");
12481
+ if (shared.convergenceDeadline !== void 0 && this.#ports.clock.monotonicNanoseconds() >= shared.convergenceDeadline) return ended("waiting");
12383
12482
  const receipt = yield { case: "wake", value: create(PeerWakeEffectSchema, {
12384
12483
  effectId: `${workId2}:join-${++wake}`,
12385
12484
  delayMillis: 250
@@ -12388,7 +12487,7 @@ var NomosRuntimeComponent = (() => {
12388
12487
  }
12389
12488
  if (shared.outcome) return ended(shared.outcome);
12390
12489
  } else {
12391
- const preparation = { settled: false };
12490
+ const preparation = { workspace: binding.workspace, settled: false };
12392
12491
  this.#preparingCalls.set(key, preparation);
12393
12492
  try {
12394
12493
  const secret = this.#ports.authorSecretIfPresent(binding.session);
@@ -12397,6 +12496,19 @@ var NomosRuntimeComponent = (() => {
12397
12496
  let posture = this.#ports.posture(request, binding.session, principal, secret, false);
12398
12497
  if (posture.deviceSignerStatus === DeviceSignerStatus.REVOKED) return ended(preparation.outcome = "revoked");
12399
12498
  if (!posture.enrolledDevice || posture.deviceSignerStatus !== DeviceSignerStatus.ACTIVE) {
12499
+ while (this.#localBirths.has(binding.workspace)) {
12500
+ const birth = this.#localBirths.get(binding.workspace);
12501
+ if (this.#ports.providerBirthObserved(birth.parent, birth.head, request.requestId)) {
12502
+ this.#localBirths.delete(binding.workspace);
12503
+ break;
12504
+ }
12505
+ if (this.#ports.clock.monotonicNanoseconds() >= enrolmentDeadline) return ended(preparation.outcome = "waiting");
12506
+ const receipt = yield { case: "wake", value: create(PeerWakeEffectSchema, {
12507
+ effectId: `${workId2}:birth-wait-${++wake}`,
12508
+ delayMillis: 100
12509
+ }) };
12510
+ if (receipt.outcome.case !== "woken") return ended(preparation.outcome = "waiting");
12511
+ }
12400
12512
  const enrolled = yield* this.#enrolAtConsole(
12401
12513
  route,
12402
12514
  binding,
@@ -12406,17 +12518,18 @@ var NomosRuntimeComponent = (() => {
12406
12518
  [binding.workspace],
12407
12519
  `${workId2}:console`,
12408
12520
  ENROLMENT_ATTEMPTS,
12409
- deadline
12521
+ enrolmentDeadline
12410
12522
  );
12411
12523
  if (enrolled.case === "deferred") return ended(preparation.outcome = enrolled.credentialRefused ? "sign-in" : "waiting");
12412
12524
  if (!(binding.workspace in enrolled.value.heads)) return ended(preparation.outcome = "denied");
12525
+ preparation.convergenceDeadline = this.#ports.clock.monotonicNanoseconds() + ENROLLED_CONVERGENCE_WAIT_NANOSECONDS;
12413
12526
  while (true) {
12414
12527
  const blockedNow = this.#copyBlocks(binding, request.requestId);
12415
12528
  if (blockedNow) return ended(preparation.outcome = blockedNow);
12416
12529
  posture = this.#ports.posture(request, binding.session, principal, secret, false);
12417
12530
  if (posture.deviceSignerStatus === DeviceSignerStatus.REVOKED) return ended(preparation.outcome = "revoked");
12418
12531
  if (posture.enrolledDevice && posture.deviceSignerStatus === DeviceSignerStatus.ACTIVE) break;
12419
- if (this.#ports.clock.monotonicNanoseconds() >= deadline) return ended(preparation.outcome = "waiting");
12532
+ if (this.#ports.clock.monotonicNanoseconds() >= preparation.convergenceDeadline) return ended(preparation.outcome = "waiting");
12420
12533
  const receipt = yield { case: "wake", value: create(PeerWakeEffectSchema, {
12421
12534
  effectId: `${workId2}:observe-${++wake}`,
12422
12535
  delayMillis: 500
@@ -12507,6 +12620,7 @@ var NomosRuntimeComponent = (() => {
12507
12620
  this.#opening.clear();
12508
12621
  this.#accounts.clear();
12509
12622
  this.#consoleEnrolments.clear();
12623
+ this.#localBirths.clear();
12510
12624
  this.#preparingCalls.clear();
12511
12625
  }
12512
12626
  #begin(request, workId2, procedure) {
@@ -13947,6 +14061,10 @@ var NomosRuntimeComponent = (() => {
13947
14061
  if (stored.head !== value.head && !value.bases.includes(stored.head)) return void 0;
13948
14062
  return fromBinary(CustodyIntentAdmissionSchema, toBinary(CustodyIntentAdmissionSchema, stored.receipt));
13949
14063
  }
14064
+ /** Older records did not distinguish parent admission from birth completion. */
14065
+ requiresBirthRecovery(workspace, change) {
14066
+ return this.#receipts.get(`receipt:${workspace}:${sha256Hex(change)}`)?.births !== false;
14067
+ }
13950
14068
  record(workspace, before, after, receipts) {
13951
14069
  const old = this.#journals.get(workspace);
13952
14070
  const journalKey = `head:${workspace}`;
@@ -13955,13 +14073,13 @@ var NomosRuntimeComponent = (() => {
13955
14073
  value.bases = [...new Set(value.bases)].slice(-MAX_BASES);
13956
14074
  const keys = new Set(value.keys);
13957
14075
  const discarded = new Set(old?.generation !== value.generation ? old?.keys : []);
13958
- for (const { change, receipt } of receipts) {
14076
+ for (const { change, receipt, births = false } of receipts) {
13959
14077
  if (receipt.outcome.case !== "admitted") continue;
13960
14078
  const key = `receipt:${workspace}:${sha256Hex(change)}`;
13961
14079
  keys.delete(key);
13962
14080
  keys.add(key);
13963
14081
  discarded.delete(key);
13964
- const header2 = encoder2.encode(`${JSON.stringify({ generation: value.generation, head: after })}
14082
+ const header2 = encoder2.encode(`${JSON.stringify({ generation: value.generation, head: after, births })}
13965
14083
  `);
13966
14084
  const body = toBinary(CustodyIntentAdmissionSchema, receipt);
13967
14085
  const bytes = new Uint8Array(header2.length + body.length);
@@ -13972,6 +14090,7 @@ var NomosRuntimeComponent = (() => {
13972
14090
  this.#receipts.set(key, {
13973
14091
  generation: value.generation,
13974
14092
  head: after,
14093
+ births,
13975
14094
  receipt: fromBinary(CustodyIntentAdmissionSchema, body)
13976
14095
  });
13977
14096
  }
@@ -14229,6 +14348,15 @@ var NomosRuntimeComponent = (() => {
14229
14348
  })();
14230
14349
  const sessions = /* @__PURE__ */ new Map();
14231
14350
  const births = [];
14351
+ const birthOutcomes = [];
14352
+ const collectBirths = (verdict) => {
14353
+ if (verdict.outcome.case !== "admitted") return;
14354
+ birthOutcomes.push(...verdict.outcome.value.birthOutcomes);
14355
+ for (const child of verdict.outcome.value.born) births.push(create(BornCustodySchema, {
14356
+ child,
14357
+ pack: this.#kernel.packDelta(workspaceMount(child.workspace), request.requestId, child.head)
14358
+ }));
14359
+ };
14232
14360
  const admittedBase = this.#kernel.head(mount, request.requestId) ?? "";
14233
14361
  const streamSession = offers[0]?.session ?? "";
14234
14362
  const streamKey = mount.workspace;
@@ -14236,8 +14364,13 @@ var NomosRuntimeComponent = (() => {
14236
14364
  const continuesStream = command.continuesAfter !== void 0 && offers.length > 0 && offers.every((offer) => offer.session === streamSession) && stream?.lastCommit === command.continuesAfter && stream.main === admittedBase;
14237
14365
  if (command.fastForwardOnly && offers.length > 0 && !continuesStream && (command.baseHead ?? "") !== admittedBase) {
14238
14366
  for (const offer of offers) {
14239
- const receipt = this.#receipts.receipt(mount.workspace, admittedBase, offer.changeUsda);
14367
+ let receipt = this.#receipts.receipt(mount.workspace, admittedBase, offer.changeUsda);
14240
14368
  if (!receipt) continue;
14369
+ if (this.#receipts.requiresBirthRecovery(mount.workspace, offer.changeUsda)) {
14370
+ const verdict = this.#offer(request, mount, offer);
14371
+ collectBirths(verdict);
14372
+ receipt = this.#record(offer, verdict);
14373
+ }
14241
14374
  receipt.commitOid = offer.commitOid;
14242
14375
  const records = sessions.get(offer.session) ?? [];
14243
14376
  records.push(receipt);
@@ -14264,6 +14397,8 @@ var NomosRuntimeComponent = (() => {
14264
14397
  }
14265
14398
  return create(CustodyAdmissionSchema, {
14266
14399
  main: admittedBase,
14400
+ bornCustody: births,
14401
+ birthOutcomes,
14267
14402
  sessions: [...sessions].map(([session, intents]) => create(CustodySessionAdmissionSchema, { session, intents })),
14268
14403
  ...delta
14269
14404
  });
@@ -14282,20 +14417,11 @@ var NomosRuntimeComponent = (() => {
14282
14417
  const records = sessions.get(offer.session) ?? [];
14283
14418
  const receipt = this.#record(offer, verdict);
14284
14419
  records.push(receipt);
14285
- receipts.push({ change: offer.changeUsda, receipt });
14420
+ receipts.push({ change: offer.changeUsda, receipt, births: verdict.outcome.case === "admitted" && (verdict.outcome.value.born.length > 0 || verdict.outcome.value.birthOutcomes.length > 0) });
14286
14421
  sessions.set(offer.session, records);
14287
14422
  if (verdict.outcome.case === "admitted") {
14288
14423
  main = verdict.outcome.value.head;
14289
- for (const child of verdict.outcome.value.born) {
14290
- births.push(create(BornCustodySchema, {
14291
- child,
14292
- pack: this.#kernel.packDelta(
14293
- workspaceMount(child.workspace),
14294
- request.requestId,
14295
- child.head
14296
- )
14297
- }));
14298
- }
14424
+ collectBirths(verdict);
14299
14425
  }
14300
14426
  }
14301
14427
  if (options.journal !== false && receipts.some((entry) => entry.receipt.outcome.case === "admitted")) {
@@ -14313,6 +14439,7 @@ var NomosRuntimeComponent = (() => {
14313
14439
  ([sessionIdentity, intents]) => create(CustodySessionAdmissionSchema, { session: sessionIdentity, intents })
14314
14440
  ),
14315
14441
  bornCustody: births,
14442
+ birthOutcomes,
14316
14443
  ...custodyReturnDelta(this.#kernel, mount, request.requestId, command.baseHead, admittedBase, main, command.observedHead)
14317
14444
  });
14318
14445
  }
@@ -17832,7 +17959,7 @@ var NomosRuntimeComponent = (() => {
17832
17959
  }
17833
17960
 
17834
17961
  // ../src/runtime/runtime_identity.ts
17835
- var PEER_RUNTIME_IDENTITY = "0.119.12" ? `@githolon/runtime@${"0.119.12"}` : "@githolon/runtime@unbundled";
17962
+ var PEER_RUNTIME_IDENTITY = "0.119.28" ? `@githolon/runtime@${"0.119.28"}` : "@githolon/runtime@unbundled";
17836
17963
 
17837
17964
  // ../src/runtime/replica_follow_desk.ts
17838
17965
  var REPLICA_FOLLOW_NAMESPACE = "nomos.peer-desk.replica-follow/v2";
@@ -18517,11 +18644,13 @@ var NomosRuntimeComponent = (() => {
18517
18644
  * A sync round just reached a provider: the link is up, and the round may have carried a birth whose
18518
18645
  * custodian now declares the child's placement. Every discovery still waiting (a failure, or an
18519
18646
  * answer without placement) is due again now, with its backoff restarted, instead of on a timer that
18520
- * grew while this peer was offline.
18647
+ * grew while this peer was offline. An enrolment acknowledgement names one
18648
+ * available workspace, so only that workspace leaves discovery backoff.
18521
18649
  */
18522
- providerReached() {
18650
+ providerReached(availableWorkspace) {
18523
18651
  const now2 = this.#now();
18524
18652
  for (const [workspace, state] of this.#inventory) {
18653
+ if (availableWorkspace !== void 0 && workspace !== availableWorkspace) continue;
18525
18654
  if (state.case === DiscoveryPhase.Waiting && state.dueAt > now2) {
18526
18655
  this.#inventory.set(workspace, { case: DiscoveryPhase.Waiting, attempt: 0, dueAt: now2 });
18527
18656
  }
@@ -19379,6 +19508,10 @@ var NomosRuntimeComponent = (() => {
19379
19508
  linkClosed;
19380
19509
  /** The host's origin fence: a link is never opened to an origin it does not permit. */
19381
19510
  originAllowed;
19511
+ /** Application peers bound pending handshakes too: a socket open can warm remote custody. */
19512
+ openingLanes = Infinity;
19513
+ /** Capacity above that bound reserved for an interaction waiting on its workspace. */
19514
+ urgentOpeningLanes = 0;
19382
19515
  /** A batch went out or an admission came back: the stream's progress may have changed. */
19383
19516
  progressChanged;
19384
19517
  /**
@@ -19684,6 +19817,8 @@ var NomosRuntimeComponent = (() => {
19684
19817
  return retried;
19685
19818
  }
19686
19819
  #open(link) {
19820
+ const limit = this.openingLanes + (this.inbound.urgent?.(link.binding.workspace) ? this.urgentOpeningLanes : 0);
19821
+ if (Number.isFinite(limit) && [...this.#links.values()].filter((other) => other.state === "opening").length >= limit) return false;
19687
19822
  link.id = `live:${++this.#sequence}:${link.binding.workspace}`;
19688
19823
  link.state = "opening";
19689
19824
  link.openedAt = void 0;
@@ -19694,6 +19829,7 @@ var NomosRuntimeComponent = (() => {
19694
19829
  link.dirty = true;
19695
19830
  const endpoint = link.origin.replace(/\/+$/, "").replace(/^http/, "ws");
19696
19831
  this.#effect(link, { case: "openUrl", value: `${endpoint}/v2/workspaces/${encodeURIComponent(link.binding.workspace)}/subscribe?${subscribeQuery(link)}` });
19832
+ return true;
19697
19833
  }
19698
19834
  #send(link, message) {
19699
19835
  const bytes = toBinary(LiveOfferFrameSchema, create(LiveOfferFrameSchema, { message }));
@@ -20041,7 +20177,10 @@ var NomosRuntimeComponent = (() => {
20041
20177
  this.#closeByRuntime(link, "open timed out");
20042
20178
  link.state = "closed";
20043
20179
  }
20044
- if (link.state === "closed" && now2 >= link.due) this.#open(link);
20180
+ if (link.state === "closed" && now2 >= link.due && !this.#open(link)) {
20181
+ wake = wake === void 0 || wake > 250n ? 250n : wake;
20182
+ continue;
20183
+ }
20045
20184
  if (link.state === "open" && !link.publisher) {
20046
20185
  const again = this.inbound.drive(link.binding.workspace);
20047
20186
  if (again !== void 0) {
@@ -21320,6 +21459,7 @@ var NomosRuntimeComponent = (() => {
21320
21459
  #remountsLost = 0;
21321
21460
  /** This round's level ask is a containment question (CAP-870): on a refusal, take this path. */
21322
21461
  #containment;
21462
+ #containmentProven = false;
21323
21463
  /** The stale bookmark a contained round replaces: its custodian's main holds the local head. */
21324
21464
  #containedBookmark;
21325
21465
  /** Local intents this round's rebase refused and parked on the refused-offer desk. */
@@ -21481,6 +21621,7 @@ var NomosRuntimeComponent = (() => {
21481
21621
  * stays this round's to replace; the local head is the round's base from here. */
21482
21622
  #contained() {
21483
21623
  this.#containment = void 0;
21624
+ this.#containmentProven = true;
21484
21625
  this.#containedBookmark = this.#previousHead;
21485
21626
  this.#previousHead = this.#localHead;
21486
21627
  }
@@ -21496,6 +21637,11 @@ var NomosRuntimeComponent = (() => {
21496
21637
  }
21497
21638
  notContainedThisLifetime.set(this.#mount.workspace, this.#localHead);
21498
21639
  }
21640
+ if (otherwise === "recover") {
21641
+ this.#offerAfterConverge = this.#command.admit;
21642
+ this.#rebaseFrom = void 0;
21643
+ return this.#acquire("full");
21644
+ }
21499
21645
  if (this.#probeOnly) {
21500
21646
  this.#needsReconciliation = true;
21501
21647
  return this.#finish(create(SyncWorkspaceResponseSchema, {
@@ -22114,6 +22260,7 @@ var NomosRuntimeComponent = (() => {
22114
22260
  }));
22115
22261
  }
22116
22262
  if (!this.#establishBase(this.#desiredHead)) {
22263
+ if (this.#mayBeContained()) return this.#askContainment("recover");
22117
22264
  this.#offerAfterConverge = this.#command.admit;
22118
22265
  this.#rebaseFrom = void 0;
22119
22266
  return this.#acquire("full");
@@ -22477,7 +22624,7 @@ var NomosRuntimeComponent = (() => {
22477
22624
  }
22478
22625
  #converged(verdict, candidateHead, receivedBytes, prefetchMillis, started = this.#clock.monotonicNanoseconds(), rebirth) {
22479
22626
  const tracked = verdict.admitted && this.#candidateDurable ? this.#kernel.resolveRef(this.#mount, this.#requestId, trackedMain) : void 0;
22480
- if (verdict.admitted && this.#candidateDurable && tracked !== candidateHead && (tracked === this.#previousHead || this.#containedBookmark !== void 0 && tracked === this.#containedBookmark)) {
22627
+ if (verdict.admitted && this.#candidateDurable && tracked !== candidateHead && (tracked === this.#previousHead || this.#containmentProven && tracked === this.#containedBookmark)) {
22481
22628
  this.#kernel.writeRef(
22482
22629
  this.#mount,
22483
22630
  this.#requestId,
@@ -25757,6 +25904,7 @@ var NomosRuntimeComponent = (() => {
25757
25904
  };
25758
25905
  var BirthCustodyDesk = class {
25759
25906
  #kernel;
25907
+ #sequence = 0;
25760
25908
  #work = new CorrespondenceWorkRegistry();
25761
25909
  #publicationRefs;
25762
25910
  /** The kernel call each unfinished birth-custody work answers. Its admitted parent frontier becomes
@@ -25771,6 +25919,9 @@ var NomosRuntimeComponent = (() => {
25771
25919
  this.#publicationRefs = publicationRefs;
25772
25920
  }
25773
25921
  afterKernelCall(request, response) {
25922
+ if (response.outcome.case === "offer" && response.outcome.value.outcome.case === "admitted") {
25923
+ this.#requireBuilt(request, response.outcome.value.outcome.value.birthOutcomes, false);
25924
+ }
25774
25925
  const births = response.outcome.case === "offer" && response.outcome.value.outcome.case === "admitted" ? response.outcome.value.outcome.value.born.map((child) => create(BornCustodySchema, {
25775
25926
  child,
25776
25927
  pack: this.#kernel.packDelta(
@@ -25782,6 +25933,7 @@ var NomosRuntimeComponent = (() => {
25782
25933
  return this.#begin(request, { case: "kernelCall", value: response }, births);
25783
25934
  }
25784
25935
  afterCustodyAdmission(request, admission) {
25936
+ this.#requireBuilt(request, admission.birthOutcomes, true);
25785
25937
  return this.#begin(
25786
25938
  request,
25787
25939
  { case: "custodyOffersAdmitted", value: admission },
@@ -25798,7 +25950,19 @@ var NomosRuntimeComponent = (() => {
25798
25950
  * retained into custody (and a stop drops it, leaving an orphan child).
25799
25951
  */
25800
25952
  continue(workId2, receipt) {
25801
- const step = this.#work.resume(workId2, receipt);
25953
+ let step;
25954
+ try {
25955
+ step = this.#work.resume(workId2, receipt);
25956
+ } catch (error) {
25957
+ const pending = this.#work.peek(workId2);
25958
+ const physicalFailure = receipt.outcome.case === "failure" || receipt.outcome.case === "bornCustodyPersisted" && receipt.outcome.value.children.some((child) => !child.persisted);
25959
+ if (physicalFailure && pending?.case === "pending" && pending.value.effect.case === "persistBornCustody" && pending.value.effect.value.effectId === receipt.effectId) {
25960
+ this.#work.failed(workId2, receipt.effectId, error instanceof Error ? error.message : String(error));
25961
+ this.#origins.delete(workId2);
25962
+ this.#bornByCustodyAdmission.delete(workId2);
25963
+ }
25964
+ throw error;
25965
+ }
25802
25966
  if (step.case !== "complete") return { step };
25803
25967
  this.#work.completed(workId2);
25804
25968
  for (const child of this.#bornByCustodyAdmission.get(workId2) ?? []) {
@@ -25814,6 +25978,20 @@ var NomosRuntimeComponent = (() => {
25814
25978
  this.#origins.clear();
25815
25979
  this.#bornByCustodyAdmission.clear();
25816
25980
  }
25981
+ #requireBuilt(request, outcomes, custody) {
25982
+ const pending = outcomes.filter((outcome) => outcome.status !== BirthOutcomeStatus.BORN);
25983
+ for (const outcome of pending) {
25984
+ console.error("nomos.birth.incomplete", {
25985
+ parent: request.target?.workspace,
25986
+ child: outcome.workspace,
25987
+ status: outcome.status,
25988
+ reason: outcome.reason,
25989
+ code: outcome.code
25990
+ });
25991
+ }
25992
+ const failed = pending.filter((outcome) => custody || outcome.status !== BirthOutcomeStatus.DEFERRED);
25993
+ if (failed.length) throw new Error(`birth custody incomplete; retry the exact admitted parent offer: ${failed.map((outcome) => `${outcome.workspace ?? "unknown child"}: ${outcome.reason ?? outcome.code ?? outcome.status}`).join("; ")}`);
25994
+ }
25817
25995
  #begin(request, outcome, births) {
25818
25996
  if (births.length === 0) return { case: "complete", value: outcome };
25819
25997
  for (const birth of births) {
@@ -25821,8 +25999,7 @@ var NomosRuntimeComponent = (() => {
25821
25999
  throw new Error("kernel admitted a birth without complete child Git custody");
25822
26000
  }
25823
26001
  }
25824
- const workId2 = `birth-custody-${births.map((birth) => `${birth.child.workspace}@${birth.child.head}`).sort().join("+")}`;
25825
- if (this.#work.has(workId2)) return this.#work.current(workId2);
26002
+ const workId2 = `birth-custody-${++this.#sequence}-${births.map((birth) => `${birth.child.workspace}@${birth.child.head}`).sort().join("+")}`;
25826
26003
  this.#origins.set(workId2, request);
25827
26004
  if (outcome.case === "custodyOffersAdmitted") {
25828
26005
  this.#bornByCustodyAdmission.set(workId2, births.map((birth) => ({
@@ -26679,6 +26856,7 @@ var NomosRuntimeComponent = (() => {
26679
26856
  }
26680
26857
  var BackgroundPaperSlots = class {
26681
26858
  #now;
26859
+ #waitingForAccess;
26682
26860
  #papers = /* @__PURE__ */ new Map();
26683
26861
  #urgentUntil = /* @__PURE__ */ new Map();
26684
26862
  #rungUntil = /* @__PURE__ */ new Map();
@@ -26687,8 +26865,9 @@ var NomosRuntimeComponent = (() => {
26687
26865
  /** Application opens still waiting on correspondence, by request id. */
26688
26866
  #opening = /* @__PURE__ */ new Map();
26689
26867
  /** `monotonicNanoseconds` of the office's observation clock. */
26690
- constructor(monotonicNanoseconds) {
26868
+ constructor(monotonicNanoseconds, waitingForAccess = () => false) {
26691
26869
  this.#now = monotonicNanoseconds;
26870
+ this.#waitingForAccess = waitingForAccess;
26692
26871
  }
26693
26872
  /** Workspaces with a paper in flight; expired leases are dropped first. */
26694
26873
  inFlight() {
@@ -26699,6 +26878,7 @@ var NomosRuntimeComponent = (() => {
26699
26878
  return new Set([...this.#papers.values()].map((paper) => paper.workspace));
26700
26879
  }
26701
26880
  urgent(workspace) {
26881
+ if (this.#waitingForAccess(workspace)) return true;
26702
26882
  const until = this.#urgentUntil.get(workspace);
26703
26883
  if (until === void 0) return false;
26704
26884
  if (until > this.#now()) return true;
@@ -26711,6 +26891,12 @@ var NomosRuntimeComponent = (() => {
26711
26891
  this.#rungUntil.set(workspace, this.#now() + BigInt(URGENT_WAIT_MILLIS) * MILLIS);
26712
26892
  if ([...this.#papers.values()].some((paper) => paper.workspace === workspace)) this.#rungBehind.add(workspace);
26713
26893
  }
26894
+ /** Speculative follows cannot turn their initial announcements into interaction priority. */
26895
+ remoteAdvanced(workspace, interacting) {
26896
+ if (!interacting && !this.urgent(workspace)) return false;
26897
+ this.rang(workspace);
26898
+ return true;
26899
+ }
26714
26900
  rung(workspace) {
26715
26901
  const until = this.#rungUntil.get(workspace);
26716
26902
  if (until === void 0) return false;
@@ -26745,9 +26931,6 @@ var NomosRuntimeComponent = (() => {
26745
26931
  if (!this.#rungBehind.delete(paper.workspace)) this.#rungUntil.delete(paper.workspace);
26746
26932
  return;
26747
26933
  }
26748
- if (response.outcome.case === "workspaceFetch" && response.outcome.value.following) {
26749
- this.#waitsOn(response.outcome.value.workspace);
26750
- }
26751
26934
  if (response.outcome.case === "unavailable") {
26752
26935
  const { reason, workspace } = response.outcome.value;
26753
26936
  if (reason === RuntimeUnavailableReason.LOCAL_REPLICA_NOT_READY || reason === RuntimeUnavailableReason.WORKSPACE_OPENING || reason === RuntimeUnavailableReason.FIRST_DOWNLOAD) {
@@ -27353,7 +27536,10 @@ var NomosRuntimeComponent = (() => {
27353
27536
  }
27354
27537
  } }
27355
27538
  );
27356
- this.#paperSlots = new BackgroundPaperSlots(() => observations.monotonicNanoseconds());
27539
+ this.#paperSlots = new BackgroundPaperSlots(
27540
+ () => observations.monotonicNanoseconds(),
27541
+ (workspace) => this.#receivingGroup?.waitingForAccess(workspace) ?? false
27542
+ );
27357
27543
  kernel.bindObservationClock(observations);
27358
27544
  bindTimelineClock(observations);
27359
27545
  this.#clock = observations;
@@ -27391,6 +27577,10 @@ var NomosRuntimeComponent = (() => {
27391
27577
  this.#lawTrees
27392
27578
  );
27393
27579
  this.#live.inbound.urgent = (workspace) => this.#paperSlots.urgent(workspace) || this.#paperSlots.rung(workspace);
27580
+ if (profile.classes.some((peerClass) => INTERACTIVE_PEER_CLASSES.has(peerClass))) {
27581
+ this.#live.openingLanes = 2;
27582
+ this.#live.urgentOpeningLanes = 2;
27583
+ }
27394
27584
  this.#liveStream = new LiveStreamServer(this.#kernel, Date.now, (workspace) => {
27395
27585
  try {
27396
27586
  this.#historyAcquisition.requestFromBackground(workspace, this.#historyCredentialCapability(workspace));
@@ -27473,9 +27663,9 @@ var NomosRuntimeComponent = (() => {
27473
27663
  this.#admissionDurability = new AdmissionDurabilityDesk(this.#kernel, retention);
27474
27664
  }
27475
27665
  this.#birthCustody = new BirthCustodyDesk(this.#kernel, (request, workspace) => {
27666
+ this.#replicaInventory.placementMayHaveChanged(workspace);
27476
27667
  if (!this.#custodianPlacement) return [];
27477
27668
  this.#custodianPlacement.ensure(workspace, request.requestId);
27478
- this.#replicaInventory.placementMayHaveChanged(workspace);
27479
27669
  return retention.refs(workspace);
27480
27670
  });
27481
27671
  this.#commandPreparation = new CommandPreparationDesk(this.#readMaintenance);
@@ -27498,7 +27688,10 @@ var NomosRuntimeComponent = (() => {
27498
27688
  const workspace = this.#sessions.binding(session).workspace;
27499
27689
  this.#trace.measure("peer.application.schedule-after-admission", { request, session, workspace }, {}, () => {
27500
27690
  this.#writeBurst?.offered();
27501
- if (!admitted.dryRun) this.#paperSlots.localWrite(workspace);
27691
+ if (!admitted.dryRun) {
27692
+ this.#paperSlots.localWrite(workspace);
27693
+ for (const child of admitted.born) this.#receivingGroup.localBirth(child.workspace, workspace, admitted.head, admitted.intentId);
27694
+ }
27502
27695
  if (!admitted.dryRun) this.#readMaintenance.localOfferAdmitted(session);
27503
27696
  this.#correspondence.workspaceFrontierChanged(workspace);
27504
27697
  });
@@ -27646,6 +27839,7 @@ var NomosRuntimeComponent = (() => {
27646
27839
  backgroundHistory: profile.backgroundHistory !== false,
27647
27840
  onSyncCompleted: (session, event) => {
27648
27841
  if (event.result?.workspace) {
27842
+ this.#receivingGroup.providerIntentsAdmitted(event.result.workspace, [...event.result.admittedIntentIds, ...event.result.convergedIntentIds]);
27649
27843
  this.#replicaInventory.placementMayHaveChanged(event.result.workspace);
27650
27844
  }
27651
27845
  if (this.#sessions.bindingIfPresent(session)) {
@@ -27668,13 +27862,17 @@ var NomosRuntimeComponent = (() => {
27668
27862
  return false;
27669
27863
  };
27670
27864
  this.#live.remoteAdvanced = (workspace) => {
27671
- this.#paperSlots.rang(workspace);
27672
- this.#rungThisReceipt?.add(workspace);
27865
+ if (this.#paperSlots.remoteAdvanced(workspace, this.#sessions.hasWorkspaceSession(workspace))) {
27866
+ this.#rungThisReceipt?.add(workspace);
27867
+ }
27673
27868
  this.#correspondence.replicaRemoteAdvanced(workspace);
27674
27869
  };
27675
27870
  this.#live.declined = (workspace) => this.#correspondence.liveAdmissionDeclined(workspace);
27676
27871
  this.#live.acknowledged = (workspace, ack) => this.#correspondence.liveAdmissionAcknowledged(workspace, ack);
27677
- this.#live.intentsAdmitted = (workspace, intentIds, local) => this.#correspondence.liveIntentsAdmitted(workspace, intentIds, local);
27872
+ this.#live.intentsAdmitted = (workspace, intentIds, local) => {
27873
+ this.#receivingGroup.providerIntentsAdmitted(workspace, intentIds);
27874
+ this.#correspondence.liveIntentsAdmitted(workspace, intentIds, local);
27875
+ };
27678
27876
  this.#live.placementAdvanced = (workspace) => this.#correspondence.replicaPlacementAnnounced(workspace);
27679
27877
  this.#live.progressChanged = () => this.#correspondence.reportFollows();
27680
27878
  this.#correspondence.streamProgress = (workspace) => this.#live.progress(workspace);
@@ -27777,7 +27975,7 @@ var NomosRuntimeComponent = (() => {
27777
27975
  }
27778
27976
  },
27779
27977
  (request) => {
27780
- if (request.command.case === "admitCustodyOffers") {
27978
+ if (request.command.case === "admitCustodyOffers" || request.command.case === "serveLiveStream") {
27781
27979
  const workspace = request.target?.workspace;
27782
27980
  if (!workspace) return void 0;
27783
27981
  return this.#kernel.head(
@@ -27838,6 +28036,11 @@ var NomosRuntimeComponent = (() => {
27838
28036
  providerBase: (request, workspace) => this.#placement.providerBase(request, this.#sessions.mountForWorkspace(workspace)),
27839
28037
  sessionsBoundTo: (workspace) => this.#sessions.applicationSessions().filter((binding) => binding.workspace === workspace).map((binding) => binding.session),
27840
28038
  localHead: (session, requestId) => this.#kernel.head(this.#sessions.mountForSession(session), requestId),
28039
+ providerBirthObserved: (parent, birthHead, requestId) => {
28040
+ const mount = workspaceMount(parent);
28041
+ const tracked = this.#kernel.resolveRef(mount, requestId, "refs/remotes/nomos/main");
28042
+ return !!tracked && (tracked === birthHead || this.#kernel.historySummary(mount, requestId, birthHead, tracked).reachedBase);
28043
+ },
27841
28044
  localCopyUnreadable: (session, requestId) => this.#localCopyUnreadable(session, requestId),
27842
28045
  localCopyRepairing: (workspace) => this.#correspondence.localCopyRepairing(workspace),
27843
28046
  refetchUnreadableLocalCopy: (workspace, head) => this.#correspondence.refetchUnreadableLocalCopy(workspace, head),
@@ -27874,7 +28077,12 @@ var NomosRuntimeComponent = (() => {
27874
28077
  this.#enrolledCapabilities.add(this.#sessions.credentialCapabilityFor(session));
27875
28078
  },
27876
28079
  // The answer names the head that carries this key's enrollDevice: fetch it now, as a doorbell would.
27877
- consoleEnrolled: (workspace) => this.#correspondence.replicaLinkOpened(workspace)
28080
+ consoleEnrolled: (workspace) => {
28081
+ this.#replicaInventory.placementMayHaveChanged(workspace);
28082
+ this.#placementDiscovery.providerReached(workspace);
28083
+ this.#paperSlots.rang(workspace);
28084
+ this.#correspondence.replicaRemoteAdvanced(workspace);
28085
+ }
27878
28086
  });
27879
28087
  this.#offerReadiness = new OfferReadinessDesk({
27880
28088
  call: (request, command) => this.#application.call(request, command),
@@ -28046,21 +28254,21 @@ var NomosRuntimeComponent = (() => {
28046
28254
  * Platform shells may wake this method and execute the returned exact frame;
28047
28255
  * they do not inspect the outbox or own retry state.
28048
28256
  */
28049
- nextBackgroundPaper(requestId, retentionOnly = false, excludedWorkspaces = /* @__PURE__ */ new Set()) {
28050
- return this.#backgroundTurn(() => this.#timedBackgroundPaper(requestId, retentionOnly, excludedWorkspaces));
28257
+ nextBackgroundPaper(requestId, retentionOnly = false, excludedWorkspaces = /* @__PURE__ */ new Set(), urgentOnly = false) {
28258
+ return this.#backgroundTurn(() => this.#timedBackgroundPaper(requestId, retentionOnly, excludedWorkspaces, urgentOnly));
28051
28259
  }
28052
- #timedBackgroundPaper(requestId, retentionOnly, excludedWorkspaces) {
28260
+ #timedBackgroundPaper(requestId, retentionOnly, excludedWorkspaces, urgentOnly) {
28053
28261
  const turn = beginTimelineTurn("paper", void 0, () => retentionOnly ? "retention" : "paper");
28054
- if (turn === void 0) return this.#nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces);
28262
+ if (turn === void 0) return this.#nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces, urgentOnly);
28055
28263
  let paper;
28056
28264
  try {
28057
- paper = this.#nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces);
28265
+ paper = this.#nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces, urgentOnly);
28058
28266
  return paper;
28059
28267
  } finally {
28060
28268
  endTimelineTurn(turn, paper?.frame === void 0 ? `paper=none next=${paper?.nextAfterMillis ?? "idle"}` : `paper=${requestId} bytes=${paper.frame.byteLength}`);
28061
28269
  }
28062
28270
  }
28063
- #nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces) {
28271
+ #nextBackgroundPaper(requestId, retentionOnly, excludedWorkspaces, urgentOnly) {
28064
28272
  if (retentionOnly) return this.#background.next(requestId, true, excludedWorkspaces);
28065
28273
  const inFlight = this.#paperSlots.inFlight();
28066
28274
  const id = typeof requestId === "bigint" ? requestId : BigInt(requestId);
@@ -28069,14 +28277,14 @@ var NomosRuntimeComponent = (() => {
28069
28277
  let paper;
28070
28278
  if (rung?.frame !== void 0) {
28071
28279
  paper = rung;
28072
- } else if (inFlight.size === 0) {
28280
+ } else if (inFlight.size === 0 && !urgentOnly) {
28073
28281
  paper = this.#background.next(requestId, false, excludedWorkspaces);
28074
28282
  } else {
28075
28283
  const retention = this.#background.next(requestId, true, excludedWorkspaces);
28076
28284
  if (retention.frame !== void 0) return retention;
28077
28285
  const free = (workspace) => !inFlight.has(workspace) && !converging.has(workspace) && !excludedWorkspaces.has(workspace);
28078
28286
  paper = this.#background.nextBeside(requestId, { has: (workspace) => this.#paperSlots.urgent(workspace) && free(workspace) });
28079
- if (paper.frame === void 0) {
28287
+ if (paper.frame === void 0 && !urgentOnly) {
28080
28288
  const ordinary = this.#background.nextBeside(requestId, { has: free });
28081
28289
  const delays = [paper.nextAfterMillis, ordinary.nextAfterMillis, retention.nextAfterMillis].filter((delay) => delay !== void 0);
28082
28290
  paper = ordinary.frame !== void 0 ? ordinary : { ...delays.length ? { nextAfterMillis: Math.min(...delays) } : {}, ...ordinary.maintenanceDue || paper.maintenanceDue ? { maintenanceDue: true } : {} };
@@ -28771,6 +28979,7 @@ var NomosRuntimeComponent = (() => {
28771
28979
  );
28772
28980
  }
28773
28981
  this.#live.close();
28982
+ this.#streamWaits.clear();
28774
28983
  if (!this.#lifecycle.close()) {
28775
28984
  this.#custody.close(request);
28776
28985
  return this.#response(request, {
@@ -29194,6 +29403,7 @@ var NomosRuntimeComponent = (() => {
29194
29403
  return;
29195
29404
  }
29196
29405
  this.#live.close();
29406
+ this.#streamWaits.clear();
29197
29407
  this.#subscriptions.clear();
29198
29408
  this.#interaction.clear();
29199
29409
  this.#readMaintenance.clear();
@@ -29236,7 +29446,9 @@ var NomosRuntimeComponent = (() => {
29236
29446
  value: this.#readResponses.begin(step.request, step.response.outcome.value.result.value)
29237
29447
  });
29238
29448
  }
29239
- return this.#birthCustodyResponse(step.request, this.#birthCustody.afterKernelCall(step.request, step.response));
29449
+ const result = this.#birthCustodyResponse(step.request, this.#birthCustody.afterKernelCall(step.request, step.response));
29450
+ this.#retentionObserver.observe(step.request, result);
29451
+ return result;
29240
29452
  }
29241
29453
  if (step.case === "pending") return this.#response(request, { case: "correspondencePending", value: step.value });
29242
29454
  if (step.case === "failure") return this.#failure(request, step.code, step.message);