dHJlZSAzNjZmMzVhZTUwZDMzOGJmNjhjOWQzM2ZjZjlmZTFkMmNkMjAxNWE5CnBhcmVudCBhMGQ3NzMxNWU0ZDJiZWJlMjVhY2Y1OGE0Y2JiODYyMDhmYzFjZmJiCmF1dGhvciBBbGV4YW5kcmUgSnVsbGlhcmQgPGp1bGxpYXJkQHdpbmVocS5vcmc+IDkwNjkyMDkxNiArMDAwMApjb21taXR0ZXIgQWxleGFuZHJlIEp1bGxpYXJkIDxqdWxsaWFyZEB3aW5laHEub3JnPiA5MDY5MjA5MTYgKzAwMDAKClJlbGVhc2UgOTgwOTI3CgpTdW4gU2VwIDI3IDE0OjI1OjM4IDE5OTggIFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCgkqIFtmaWxlcy9kcml2ZS5jXQoJTWFrZSBzdXJlIEdldERyaXZlVHlwZTMyQSgpIGhhbmRsZXMgcGFyYW0gTlVMTC4gIEFkZGVkIHNvbWUKCWRvYyBvbiBmdW5jdGlvbi4KClN1biBTZXAgMjcgMTQ6MDc6MjYgMTk5OCAgSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CgoJKiBbY29udHJvbHMvZWRpdC5jXSBbd2luZG93cy93aW4uY10KCURvbid0IGNhbGwgU2V0V2luZG93TG9uZygpIGluIEVESVRfV01fTkNSRUFURS4KCUZpeCBTZXRXaW5kb3dMb25nKEdXTF9bRVhdU1RZTEUpIHRvIHdvcmsgZm9yIDE2Yml0IHdpbmRvd3MuIFJlbW92ZQoJVXBkYXRlV2luZG93KCkgY2FsbC4gCgpTdW4gU2VwIDI3IDEzOjQxOjIyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGxyYy5lcGZsLmNoPgoKCSogW3NjaGVkdWxlci8qLmNdIFtzZXJ2ZXIvZXZlbnQuY10gW3NlcnZlci9tdXRleC5jXQoJICBbc2VydmVyL3NlbWFwaG9yZS5jXQoJSW1wbGVtZW50ZWQgc2VydmVyLXNpZGUgc3luY2hyb25pc2F0aW9uIG9iamVjdHMuCgpTdW4gU2VwIDI3IDAxOjEzOjM1IDE5OTggIEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CgoJKiBbZGxscy9jb21jdGwzMi90cmVldmlldy5jXSBbaW5jbHVkZS90cmVldmlldy5oXSBbaW5jbHVkZS9jb21jdGwuaF0KCVRyZWV2aWV3IGltcGxlbWVudGF0aW9uLgoKCSogW2RsbHMvY29tY3RsMzIvdHJhY2tiYXIuY10gW2luY2x1ZGUvdHJhY2tiYXIuaF0gCglUcmFja2JhciBpbXBsZW1lbnRhdGlvbi4KClNhdCBTZXAgMjYgMjA6NDk6MTMgMTk5OCAgVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CgoJKiBbaWYxNjMyL3RodW5rLmNdIFt0b29scy9idWlsZC5jXSBbd2luMzIva2VybmVsMzIuY10KCUJ1Z2ZpeDogc2V2ZXJhbCBwcm9ibGVtcyB3aXRoIGZsYXQgdGh1bmtzIGZpeGVkLgoKCSogW21lbW9yeS9zZWxlY3Rvci5jXQoJQnVnZml4OiBJc0JhZC4uLlB0cjE2IGRpZG4ndCB3b3JrIGZvciBsaW1pdF9pbl9wYWdlcyBzZWdtZW50cy4KCgkqIFtzY2hlZHVsZXIvdGhyZWFkLmNdCglCdWdmaXg6IENyZWF0ZVRocmVhZDogQWxsb3cgaWQgcGFyYW1ldGVyID09IE5VTEwuCgoJKiBbb2JqZWN0cy9nZGlvYmouY10KCUJ1Z2ZpeDogSXNHRElPYmplY3Q6IFJldHVybiBjb3JyZWN0IG9iamVjdCB0eXBlIGZvciBzdG9jayBvYmplY3RzLgoKCSogW21zZG9zL2RwbWkuY10KCUJ1Z2ZpeDogZml4ZWQgdHlwbyBpbiBJTlRfRG9SZWFsTW9kZUludC4KCgkqIFttc2Rvcy9pbnQyMS5jXQoJQnVnZml4OiBpbnQyMSBSRUFEICptdXN0KiB1c2UgV0lOMTZfaHJlYWQsIG5vdCBfaHJlYWQxNi4KCgkqIFtpZjE2MzIva2VybmVsLnNwZWNdIFtpZjE2MzIvZHVtbXkuY10gW2lmMTYzMi90aHVuay5jXQoJICBbbG9hZGVyL25lL21vZHVsZS5jXSBbc2NoZWR1bGVyL2V2ZW50LmNdIFtzY2hlZHVsZXIvc3luY2hyby5jXQoJICBbc2NoZWR1bGVyL3RocmVhZC5jXSBbd2luMzIva2VybmVsMzIuY10gW3dpbjMyL29yZGluYWxzLmNdCglBZGRlZCBuYW1lcy9zdHVicyBmb3IgYWxsIHVuZG9jdW1lbnRlZCBLRVJORUwgcm91dGluZXMgKFdpbjk1KS4KCUFkZGVkIHRoZSBmb2xsb3dpbmcgdW5kb2MuIDE2LWJpdCBlcXVpdmFsZW50cyB0byBXaW4zMiByb3V0aW5lczoKCUtFUk5FTC40NDEtNDQzLDQ0OS00NTMsNDU2LTQ2Miw0NzEtNDc2LDQ3OS00ODYsNDg4LgoJQWRkZWQgc3R1YnMgZm9yIHNvbWUgb3RoZXIgS0VSTkVMIHJvdXRpbmVzLgoKCSogW21lbW9yeS9oZWFwLmNdIFttZW1vcnkvZ2xvYmFsLmNdIFtpbmNsdWRlL2dsb2JhbC5oXQoJSW1wbGVtZW50ZWQgTG9jYWwzMi4uLiAzMi1iaXQgbG9jYWwgaGVhcCByb3V0aW5lcyAoS0VSTkVMLjIwOC0yMTUsIDIyOSkuCgoJKiBbbWlzY2VtdS9pbnN0ci5jXSBbbG9hZGVyL21vZHVsZS5jXSBbaW5jbHVkZS9tb2R1bGUuaF0KCUltcGxlbWVudGVkIF9fR1AgZmF1bHQgaGFuZGxpbmcgYW5kIEhhc0dQSGFuZGxlciAoS0VSTkVMLjMzOCkuCgoJKiBbbWlzYy9lcnJvci5jXQoJSW1wbGVtZW50ZWQgTG9nUGFyYW1FcnJvclJlZ3MgKEtFUk5FTC4zMjcpLgoKCSogW2xvYWRlci90YXNrLmNdIFtpbmNsdWRlL3dpbmRvd3MuaF0KCUltcGxlbWVudGVkIEdldENvZGVJbmZvIChLRVJORUwuMTA0KS4KCgkqIFtsb2FkZXIvdGFzay5jXSBbc2NoZWR1bGVyL3RocmVhZC5jXSBbaW5jbHVkZS90aHJlYWQuaF0KCUltcGxlbWVudGVkIFtHU11ldFRocmVhZFF1ZXVlIGFuZCBbR1NdZXRGYXN0UXVldWUgKEtFUk5FTC40NjMvNCwgNjI0LzUpLgoKCSogW2lmMTYzMi9nZGkuc3BlY10gW29iamVjdHMvZGMuY10gW29iamVjdHMvZGliLmNdCgkgIFtvYmplY3RzL2JpdG1hcC5jXSBbaW5jbHVkZS93aW5kb3dzLmhdCglCdWdmaXg6IGZpeGVkIHdyb25nIHBhcmFtZXRlciBmb3IgQ3JlYXRlRElCU2VjdGlvbjE2LgoJQWRkZWQgW0dTXWV0RElCQ29sb3JUYWJsZTE2LCBzdHViIGZvciBHZXRCb3VuZHNSZWN0MTYuCglQYXJ0aWFsbHkgaW1wbGVtZW50ZWQgQklUTUFQX0dldE9iamVjdDE2IGZvciBESUJzLgoKCSogW2lmMTYzMi9nZGkuc3BlY10gW3JlbGF5MzIvZ2RpMzIuc3BlY10gW29iamVjdHMvcGFsZXR0ZS5jXQoJQWRkZWQgc29tZSBHREkgc3R1YnMuCgoJKiBbaWYxNjMyL01ha2VmaWxlLmluXSBbaWYxNjMyL2Rpc3BsYXkuc3BlY10gW2lmMTYzMi9tb3VzZS5zcGVjXQoJICBbaWYxNjMyL2tleWJvYXJkLnNwZWNdIFtpZjE2MzIvYnVpbHRpbi5jXSBbd2luZG93cy9rZXlib2FyZC5jXQoJQWRkZWQgc29tZSBzdHVicyBmb3IgV2luMTYgZHJpdmVyczogS0VZQk9BUkQsIE1PVVNFLCBESVNQTEFZLgoKCSogW2lmMTYzMi93cHJvY3Muc3BlY10gW21zZG9zL3Z4ZC5jXQoJQWRkZWQgc29tZSBzdHVicyBmb3IgVnhEczogVk1NLCBDb25maWdNRywgVGltZXJBUEkuCgoJKiBbbXNkb3MvaW50MmYuY10KCUFkZGVkIHNvbWUgc3R1YnMgZm9yIHJlYWwtbW9kZSBuZXR3b3JrIGRyaXZlcnMuCgpTYXQgU2VwIDI2IDE4OjE4OjE4IDE5OTggIE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgoKCSogW2NvbmZpZ3VyZS5pbl0KCU1lcmdlZCBpbiBzb21lIG1vcmUgb2YgdGhlIEZyZWVCU0QgcG9ydHMvZW11bGF0b3JzL3dpbmUgcGF0Y2hlcy4gCgkoTWFpbnRhaW5lcihzKSBvZiB0aGlzIHBvcnQ6IFlvdSBjYW4ganVzdCBzdWJtaXQgdGhlc2UKCXBhdGNoZXMgdG8gQWxleGFuZHJlIGRpcmVjdGx5LikKCgkgKiBbbG9hZGVyL3BlX2ltYWdlLmNdCglDaGVjayBmaWxlc2l6ZSBvZiBpbWFnZSBhZ2FpbnN0IHNpemUgZGVyaXZlZCBmcm9tIGhlYWRlcgoJdG8gc3BvdCB0cnVuY2F0ZWQgZXhlY3V0ZWFibGVzIHdpdGhvdXQgY3Jhc2hpbmcuCgoJKiBbZmlsZXMvZGlyZWN0b3J5LmNdCglTZXQgZW52dmFyICJDT01TUEVDIi4gT25lIHdpbjMyKCEhKSBwcm9ncmFtIGNyYXNoZXMgd2l0aG91dCBpdC4KCgkqIFttdWx0aW1lZGlhL21taW8uY10KCUFkZGVkIG1taW9TZXRJbmZvMzIuCgoJKiBbaW5jbHVkZS9maWxlLmhdCglSZXR1cm4gU1REX0VSUk9SX0hBTkRMRSBmb3IgQVVYIGFuZCBQUlQgZG9zIGhhbmRsZXMuCgoJKiBbbG9hZGVyL21vZHVsZS5jXQoJSGFuZGxlIGV4ZWN1dGVhYmxlcyB3aXRoIHNwYWNlcyBpbiB0aGVpciBuYW1lcyBhIGJpdCBiZXR0ZXIgaW4KCUNyZWF0ZVByb2Nlc3MuCgoJKiBbcmVsYXkzMi9tc3ZmdzMyLnNwZWNdW2lmMTYzMi9tc3ZpZGVvLnNwZWNdW211bHRpbWVkaWEvbXN2aWRlby5jXVtpbmNsdWRlL3Zmdy5oXQoJU3RhcnRlZCBvbiBNUyBWaWRlbyBzdXBwb3J0IChjYW4gbG9hZCBXaW4zMiBJQ01zKS4KCgkqIFt0b29scy90ZXN0cnVuXQoJQSBiaXQgc21hcnRlciB1c2Ugb2YgcHMuCgoJKiBbbWVtb3J5L3ZpcnR1YWwuY10KCVJlcG9ydCBQQUdFX0dVQVJEZWQgcGFnZXMgYXMgUEFHRV9QUk9URUNURUQgKEF1dG9DQUQgTFQgUjE3IGZhaWxzCgl3aXRob3V0IHRoYXQgY2hlY2sgKHNpbmNlIFdpbjk1IGRvZXNuJ3Qga25vdyBhYm91dCBQQUdFX0dVQVJEKSkuCgpTYXQgU2VwIDI2IDE1OjA0OjA1IDE5OTggIE92ZSBLYWF2ZW4gPG92ZWtAYXJjdGljbmV0Lm5vPgoKCSogW2luY2x1ZGUvbWlzY2VtdS5oXSBbaWYxNjMyL2J1aWx0aW4uY10gW2xvYWRlci90YXNrLmNdCgkgIFttaXNjZW11L2luc3RyLmNdIFttc2Rvcy9kcG1pLmNdIFttc2Rvcy9pbnQyMS5jXQoJICBbbXNkb3MvaW50ZXJydXB0cy5jXSBbd2luZG93cy91c2VyLmNdCglJTlRfW1N8R11ldEhhbmRsZXIgd2FzIHJlbmFtZWQgdG8gSU5UX1tTfEddZXRQTUhhbmRsZXIuCglBZGRlZCBoYW5kbGVycyB0byBkZWFsIHdpdGggcmVhbC1tb2RlIGludGVycnVwdHM7IERPUwoJcHJvZ3JhbXMgYXJlIG5vdyBhYmxlIHRvIGhvb2sgcmVhbC1tb2RlIGludGVycnVwdHMuCgoJKiBbbG9hZGVyL2Rvcy9tb2R1bGUuY10gW21zZG9zL2Rvc21lbS5jXSBbbXNkb3MvaW50MjEuY10KCU1vdmVkIHJlYWwtbW9kZSBpbnRlcnJ1cHQgdGFibGUgaW5pdGlhbGl6YXRpb24gdG8KCW1zZG9zL2Rvc21lbS5jLCBhbmQgbWFkZSBuZXcgVjg2IHRhc2tzIGdldCBhIGZ1bGwgY29weQoJb2YgdGhlIGV4aXN0aW5nICJzeXN0ZW0gbWVtb3J5IiBpbnN0ZWFkIG9mIGFsbW9zdCBlbXB0eQoJc3BhY2UuIE1pc2MgZml4ZXMuCgoJKiBbaW5jbHVkZS9kb3NleGUuaF0gW2xvYWRlci9kb3MvbW9kdWxlLmNdIFttc2Rvcy9kcG1pLmNdCgkgIFttc2Rvcy9pbnQyZi5jXQoJRmlyc3Qgc2hvdCBhdCBsZXR0aW5nIERPUyBwcm9ncmFtcyBzdGFydCB1cCBEUE1JIChidXQgRFBNSQoJaXMgc3RpbGwgZGlzYWJsZWQgZm9yIERPUyBwcm9ncmFtcywgZm9yIHBrdW56aXAncyBzYWtlKS4KCgkqIFtpbmNsdWRlL2RlYnVnZ2VyLmhdIFtkZWJ1Z2dlci9icmVhay5jXSBbZGVidWdnZXIvZGJnLnldCgkgIFtkZWJ1Z2dlci9yZWdpc3RlcnMuY10gW2RlYnVnZ2VyL21lbW9yeS5jXSBbZGVidWdnZXIvaW5mby5jXQoJICBbbG9hZGVyL2Rvcy9kb3N2bS5jXQoJRmlyc3Qgc2hvdCBhdCBtYWtpbmcgV2luZSdzIGRlYnVnZ2VyIHdvcmsgZm9yIERPUyBwcm9ncmFtcy4KCVRoZSAtZGVidWcgZmxhZyB3b3JrcywgYXMgZG8gIm5leHRpIiBhbmQgInN0ZXBpIi4KClNhdCBTZXAgMjYgMTM6MTM6MTMgMTk5OCAgSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CgoJKiBbZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuY10KCU5ldyBjbGFzc2VzIElFbnVtRk9STUFURVRDIGltcGxlbWVudGVkLCBJRGF0YU9iamVjdCBzdHVicy4KCQoJKiBbZGxscy9zaGVsbDMyLyouKl1bcmVsYXkzMi9zaGVsbDMyLnNwZWNdCglCdWdmaXhlcy4KCU5ldzogSUNNX0luc2VydEl0ZW0oKSwgSUxDcmVhdGVGcm9tUGF0aCgpLgoJSW1wbGVtZW50ZWQ6IElMQ2xvbmVGaXJzdCgpLgoJU3R1YnM6IElMSXNFcXVhbCgpLCBJTEZpbmRDaGlsZCgpLCBTSExvZ0lMRnJvbUZTSUwoKSwKCSAgUGF0aE1hdGNoU3BlYygpLCBQYXRoSXNFeGUoKS4KCUNoYW5nZWQ6IElMR2V0U2l6ZSgpLCBfSUxJc0Rlc2t0b3AoKSwgUGF0aENvbWJpbmUoKS4KCgkqIFtpbmNsdWRlL3NobG9iai5oXQoJTmV3IFNITEdVSUQncwoJTmV3IHN0cnVjdHVyZXM6IERWVEFSR0VUREVWSUNFMzIsIFNUR01FRElVTTMyLCBGT1JNQVRFVEMzMiwKCUNMSVBGT1JNQVQzMi4KCU5ldyBpbnRlcmZhY2VzOiBJRW51bUZPUk1BVEVUQywgSURhdGFPYmplY3QsIElDb21tRGxnQnJvd3NlcgoJSURvY2tpbmdXaW5kb3dGcmFtZSwgSVNlcnZpY2VQcm92aWRlci4KCgkqIFtkbGxzL3NoZWxsMzIvZm9sZGVycy5jXQoJU3R1YnMgZm9yIElTaGVsbExpbmsuCgoJKiBbbG9hZGVyL3Jlc291cmNlLmNdCglTbWFsbCBmaXhlcy4KCgkqIFttaXNjL2NydGRsbC5jXVtyZWxheTMyL2NydGRsbC5zcGVjXQoJTmV3IF9fZGxsb25leGl0KCkuCgoJKiBbd2luZG93cy9tZXNzYWdlLmNdCglTZW5kTm90aWZ5TWVzc2FnZUEsIFNlbmRNZXNzYWdlQ2FsbEJhY2szMkEgaGFsZiBpbXBsZW1lbnRlZC4KCgkqIFtjb250cm9scy9lZGl0LmNdCglFRElUX1dNX1NldFRleHQgc2V0IEVGX1VQREFURSBmbGFnIG5vdCBmb3IgRVNfTVVMVElMSU5FLgoKCSogW2ZpbGVzL2ZpbGUuY10KCUhhbmRsaW5nIG9mIGZpbGVwb3NpdGlvbiBmaXhlZC4KCkZyaSBTZXAgMjUgMTg6MTM6MzAgMTk5OCAgUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CgoJKiBbaW5jbHVkZS93aW5kb3dzLmhdIFtpbmNsdWRlL3dpbnR5cGVzLmhdCgkgIFtvbGUvb2xlMm5scy5oXSBbcmVsYXkzMi9rZXJuZWwzMi5zcGVjXQoJSW1wbGVtZW50ZWQgRW51bURhdGVGb3JtYXRzIGFuZCBFbnVtVGltZUZvcm1hdHMuCglPbmx5IGFkZHMgVVMgRW5nbGlzaCBzdXBwb3J0LgoKCSogW01ha2VmaWxlLmluXSBbY29uZmlndXJlLmluXSAKCSAgW2RsbHMvTWFrZWZpbGUuaW5dIFtkbGxzL3BzYXBpL01ha2VmaWxlLmluXSAKCSAgW2RsbHMvcHNhcGkvcHNhcGlfbWFpbi5jXSAKCU5ldyBmaWxlcyB0byBpbXBsZW1lbnQgc3R1YnMgZm9yIFBTQVBJLkRMTCAoTlQgb25seSkuCgoJKiBbcmVsYXkzMi9NYWtlZmlsZS5pbl0gW3JlbGF5MzIvYnVpbHRpbjMyLmNdIAoJICBbcmVsYXkzMi9wc2FwaS5zcGVjXQoJTmV3IHNwZWMgZmlsZSBmb3IgUFNBUEkuRExMIChOVCBvbmx5KS4KCgkqIFtzY2hlZHVsZXIvaGFuZGxlLmNdCglIQU5ETEVfR2V0T2JqUHRyIHNob3VsZCBvbmx5IGludGVycHJldCB0aGUgcHNldWRvIGhhbmRsZXMgYXMgdGhlCgljdXJyZW50IHRocmVhZCBvciB0aGUgY3VycmVudCBwcm9jZXNzIGlmIGEgdGhyZWFkIG9yIGEgcHJvY2VzcyBpcwoJcmVxdWVzdGVkLgoKCSogW2luY2x1ZGUvd2ludmVyc2lvbi5oXSBbbWlzYy92ZXJzaW9uLmNdCglBZGRzIHRoZSBnbG9iYWwgZnVuY3Rpb24gVkVSU0lPTl9HZXRWZXJzaW9uKCkgc28gZnVuY3Rpb25zIGNhbgoJaGF2ZSBkaWZmZXJlbnQgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIHRoZSAtd2ludmVyIGZsYWcuCgoJKiBbaW5jbHVkZS9vbGVkbGcuaF0gW29sZS9vbGVkbGcuY10KCU1pbm9yIGZpeGVzLiAKCgkqIFt3aW5kb3dzL3dpbnByb2MuY10KCU1pbm9yIGNoYW5nZXMuCgoJKiBbaW5jbHVkZS9pbW0uaF0gW21pc2MvaW1tLmNdCglOb3cgcmV0dXJucyBjb3JyZWN0IHZhbHVlcyB1bmRlciBib3RoIFdpbmRvd3MgOTUgYW5kIE5UIDQuMC4KClRodSBTZXAgMjQgMjI6MTE6NDQgMTk5OCAgS3Jpc3RpYW4gTmllbHNlbiAgPGtyaXN0aWFuLm5pZWxzZW5Acmlzb2UuZGs+CgoJKiBbY29uZmlndXJlLmluXSBbaW5jbHVkZS9hY2NvbmZpZy5oXSBbaW5jbHVkZS90aHJlYWQuaF0KCSAgW3NjaGVkdWxlci9zeXNkZXBzLmNdCglBdXRvY29uZmlnIHRlc3QgZm9yIG5vbi1yZWVudHJhbnQgbGliYy4KCldlZCBTZXAgMjMgMTk6NTI6MTIgMTk5OCAgTWF0dGhldyBCZWNrZXIgPG1iZWNrZXJAZ2xhc3NjaXR5Lm5ldD4KCgkqIFsqLyouY10KCU1pc2NlbGxhbmVvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBkZWJ1Z2dpbmcgb3V0cHV0IAoJc3RhbmRhcmRpemF0aW9ucy4KCgkqIFtvYmplY3RzL2NsaXBwaW5nLmNdCglBZGRlZCBFeHRTZWxlY3RDbGlwUmduLgoKV2VkIFNlcCAyMyAwMDowMzoyOCBFRFQgMTk5OCAgUGV0ZSBSYXR6bGFmZiA8cHJhdHpsYWZmQGNmYS5oYXJ2YXJkLmVkdT4KCgkqIFtpbmNsdWRlL3dpbmRvd3MuaF0gW2lmMTYzMi91c2VyLnNwZWNdIFtyZWxheTMyL3VzZXIzMi5zcGVjXQoJICBbd2luZG93cy9rZXlib2FyZC5jXQoJQWRkZWQsIG1hcmdpbmFsbHkgaW1wbGVtZW50ZWQsIEdldEtleWJvYXJkTGF5b3V0TmFtZSgpLgoJT25seSByZXR1cm5zIFVTIEVuZ2xpc2gga2V5Ym9hcmQgbmFtZS4KClR1ZSBTZXAgMjIgMTY6MzI6NDEgMTk5OCAgTWFyY2VsIEJhdXIgPG1iYXVyQGlpaWMuZXRoei5jaD4KCgkqIFtwcm9ncmFtcy9jb250cm9sLypdCglOZXcgV2luZWxpYiBhcHBsaWNhdGlvbi4KCk1vbiBTZXAgMjEgMDA6Mjk6MTggMTk5OCAgUGV0ZXIgSHVubmlzZXR0IDxodW5uaXNlQG5vcnRlbC5jYT4KCgkqIFtpbmNsdWRlL2RwbGF5LmhdW211bHRpbWVkaWEvZHBsYXkuY11bb2xlL2NvbXBvYmouY10KCUFkZGVkIGFsbCBEaXJlY3RQbGF5TG9iYnkgaW50ZXJmYWNlcyBhbmQgZW5oYW5jZWQgRGlyZWN0UGxheQoJYW5kIERpcmVjdFBsYXlMb2JieSBzdXBwb3J0LiBTdGlsbCBub3QgYWxsIHRoYXQgbXVjaC4gVXNlZnVsCgllbm91Z2ggaWYgeW91IGp1c3QgbmVlZCB0byBzdGFydCBhIHByb2dyYW0sIGRvbid0IHRyeSBhbnkKCXJlYWwgZHBsYXkvbG9iYnkgc3R1ZmYuCgoJKiBbZG9jdW1lbnRhdGlvbi9zdGF0dXMvZGlyZWN0cGxheV0KCUFkZGVkIGEgdmVyeSBsaXR0bGUgYml0LgoKCSogW2dyYXBoaWNzL2RkcmF3LmNdCgktIENhbGwgdG8gU2V0V2luZG93TG9uZzMyQSB3YXNuJ3Qgd29ya2luZyBiZWNhdXNlIHRoZXJlIHdhcyBubwoJICBtZW1vcnkgc2V0IGFzaWRlIHdoZW4gdGhlIHdpbmRvdyBjbGFzcyB3YXMgcmVnaXN0ZXJlZC4KCS0gRml4ZWQgc29tZSB4bGliIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY2hhbmdlIHRoZSBiZWhhdmlvdXIKCSAgb2YgRGlyZWN0RHJhd1N1cmZhY2UzX1NldFBhbGV0dGUgdG8gbWltaWMgb2JzZXJ2ZWQgYmVoYXZpb3VyCgkgIChwYWxldHRlIGlzIGFzc29jaWF0ZWQgd2lsbCBhbGwgYmFja2J1ZmZlcnMpCgktIEFsc28gc3RvcmVkIGFsbCBwYWxldHRlIGNvbG91ciBmaWVsZHMgYW5kIHNwaXQgYmFjayBvdXIgc2F2ZWQKCSAgY29sb3VyIGZpZWxkcyByYXRoZXIgdGhhbiBxdWVyeSBYIGZvciB0aGVtLgoJLSBBZGRlZCBwbGVudHkgb2YgQWRkUmVmIGFuZCBSZWxlYXNlIHRyYWNlcy4KCS0gQWRkZWQgWGxpYiBzdXBwb3J0IGZvciB1c2luZyAtZGVza3RvcCBvcHRpb24uCgktIEZpeGVkIFhsaWIgbWVzc2FnZSBoYW5kbGluZy4gTWVzc2FnZXMgd2VyZW4ndCBiZWluZyBwYXNzZWQgdG8KCSAgdGhlIGFwcGxpY2F0aW9uLiBGaXhlcyBtb3VzZSBtb3ZlbWVudHMgaW4gc29tZSB4bGliIEREcmF3IGdhbWVzLgoJLSBBZGRlZCBhIGZldyBzdHVicy4KCgkqIFt3aW5kb3dzL3dpbi5jXVtpbmNsdWRlL3dpbmVycm9yLmhdCglGaXhlZCB1cCBzb21lIGVycm9yIGhhbmRsaW5nIGluIFdJTl9TZXRXaW5kb3dMb25nLiBTZXRMYXN0RXJyb3IKCXdhc24ndCBiZWluZyB1c2VkLiBDb3VsZCBjYXVzZSBwcm9ibGVtcyB3aXRoIDAgcmV0dXJuIGNvZGVzLgoJQWRkZWQgbmV3IGVycm9yIGluIHdpbmVycm9yICgxNDAwKS4KCgkqIFtBVVRIT1JTXSBbaW5jbHVkZS9hdXRob3JzLmhdCglBZGRlZCBteXNlbGYgYXMgYSBXaW5lIGF1dGhvci4KClN1biBTZXAgMjAgMjE6MjI6NDQgMTk5OCAgQWxleGFuZGVyIExhcnNzb24gIDxhbGxhQGx5c2F0b3IubGl1LnNlPgoKCSogW2xvYWRlci9tb2R1bGUuY10KCUNoYW5nZWQgR2V0TW9kdWxlRmlsZU5hbWUzMkEgc28gdGhhdCBpcyByZXR1cm5zIHRoZQoJbG9uZyB2ZXJzaW9uIG9mIHRoZSBmaWxlbmFtZS4gTm90ZSB0aGF0IGp1c3QgdGhlIG5hbWUKCWlzIGxvbmcsIG5vdCB0aGUgZGlyZWN0b3JpZXMuCgpTYXQgU2VwIDE5IDIwOjA1OjMwIDE5OTggUGVyIMVuZ3N0cvZtIDxwYW5nQG1pbmQubnU+IAoKCSogW2NvbnRyb2xzL21lbnUuY10KCU1hZGUgYSBjb3VwbGUgb2YgZml4ZXMgdG8gbWFrZSBsaWZlIGVhc2llciBmb3IgYXBwbGljYXRpb25zIHRoYXQgYWx0ZXIKCXRoZWlyIG1lbnVzIGF0IHJ1bnRpbWUuCgoJKiBbd2luZG93cy9kZWZkbGcuY10KCVJlbW92ZWQgdGhlIGNhc3Qgb2YgdGhlIHJldHVybiB2YWx1ZSBmcm9tIGRpYWxvZyBwcm9jZWR1cmVzIHRvIGEgMTYtYml0Cglib29sLiBUaGUgcmV0dXJuIHZhbHVlIG5lZWRzIHRvIHJldGFpbiBhbGwgaXRzIDMyIGJpdHMsIHNpbmNlIGl0IGlzIG5vdCAKCWFsd2F5cyBhIGJvb2wsIHN1Y2ggYXMgd2hlbiByZXNwb25kaW5nIHRvIHRoZSBXTV9OQ0hJVFRFU1QgbWVzc2FnZS4KCkZyaSBTZXAgMTggMTE6MzA6MzggMTk5OCAgU2VyZ2V5IFR1cmNoYW5vdiA8dHVyY2hhbm92QHVzYS5uZXQ+CgoJKiBbbG9hZGVyL3Jlc291cmNlLmNdCglGaXhlZCB2ZXJ5IGZ1bm55IGJ1ZyAodGhvdWdoIGdyYXZlbHkgYWZmZWN0aW5nIGZ1cnRoZXIgZXhjZWN1dGlvbikKCXdpdGggRmluZFJlc291cmNlW0V4XTMyIGZ1bmN0aW9ucy4KCgkqIFtpbmNsdWRlL211bHRpbW9uLmhdIFt3aW5kb3dzL211bHRpbW9uLmNdIFtyZWxheTMyL3VzZXIzMi5zcGVjXQoJICBbaW5jbHVkZS93aW5kb3dzLmhdIFt3aW5kb3dzL3N5c21ldHJpY3MuY10KCURlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIE11bHRpbW9uaXRvciBBUEkuCgoJKiBbaW5jbHVkZS93aW5kb3dzLmhdIFt3aW5kb3dzL3dpbnBvcy5jXQoJRml4ZWQgaW5jb3JyZWN0IGRlY2xhcmF0aW9uIChhbmQgYmVoYXZpb3VyKSBvZiBHZXRXaW5kb3dSZWN0MzIuCgpXZWQgU2VwIDE2IDEwOjIxOjE1IDE5OTggIEdlcmFyZCBQYXRlbCA8Ry5QYXRlbEBXYW5hZG9vLmZyPgoKCSogW2NvbnRyb2xzL2VkaXQuY10KCUZpeGVkIEVESVRfRU1fR2V0TGluZSB0byB1c2UgY29ycmVjdGx5IGxlbmd0aCBvZiBsaW5lcy4KClR1ZSBTZXAgMTUgMjA6NDA6MTYgMTk5OCAgRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KCgkqIFttaXNjL3R3ZWFrLmNdW2luY2x1ZGUvdHdlYWsuaF1bY29udHJvbHMvbWVudS5jXQoJUmVwbGFjZWQgdGhlIHR3ZWFrIGdyYXBoaWMgcm91dGluZXMgYnkgY2FsbHMgdG8gRHJhd0VkZ2UzMigpLgoKCSogW21pc2MvdHdlYWsuY11baW5jbHVkZS90d2Vhay5oXVtkb2N1bWVudGF0aW9uL3dpbjk1bG9va10KCSAgW3dpbmUuaW5pXVsqLypdCglDaGFuZ2VkICJsb29rIGFuZCBmZWVsIiBzZWxlY3Rpb24uIEFsbG93cyBXaW4zLjEsIFdpbjk1IGFuZAoJV2luOTggKG5vIEdVSSBjb2RlIGltcGxlbWVudGVkKSBsb29rIGFuZCBmZWVsLgoKCSogW2RsbHMvY29tY3RsMzIvaGVhZGVyLmNdW2luY2x1ZGUvaGVhZGVyLmhdW2luY2x1ZGUvY29tbWN0cmwuaF0KCVN0YXJ0ZWQgY2FsbGJhY2sgaXRlbSBzdXBwb3J0IGFuZCBkaWQgc29tZSBtaW5vciBpbXByb3ZlbWVudHMuCgoJKiBbZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuY10KCUZpeGVkIGJ1ZyBpbiB0cmFuc3BhcmVudCBpbWFnZSBkaXNwbGF5LgoJSW1hZ2VMaXN0X0dldEljb24gaXMgc3RpbGwgYnVnZ3kgOi0oCgoJKiBbZGxscy9jb21jdGwzMi90b29sYmFyLmNdCglGaXhlZCBidXR0b24gZHJhd2luZyAocGFydGlhbCBoYWNrKS4KCgkqIFtkbGxzL2NvbWN0bDMyL2NvbW1jdHJsLmNdCglGaXhlZCBNZW51SGVscCgpLgoKCSogW2NvbnRyb2xzL2J1dHRvbi5jXQoJQWRkZWQgM2QgZWZmZWN0IGZvciBncm91cGJveC4KCgkqIFt3aW5kb3dzL21zZ2JveC5jXQoJQWRkZWQgZm9udCBzdXBwb3J0IGZvciBtZXNzYWdlIGJveGVzLgoKCSogW3dpbmRvd3Mvbm9uY2xpZW50LmNdCglGaXhlZCB3aW5kb3cgbW92aW5nIGJ1Zy4KCgkqIFtkbGxzL2NvbWN0bDMyLyouY10KCVZhcmlvdXMgaW1wcm92ZW1lbnRzLgoKCSogW2RsbHMvY29tY3RsMzIvbGlzdHZpZXcuY11bZGxscy9jb21jdGwzMi9yZWJhci5jXQoJICBbaW5jbHVkZS9jb21tY3RybC5oXQoJTW9yZSBtZXNzYWdlcy4KCgkqIFt3aW5kb3dzL3N5c2NvbG9yLmNdW2luY2x1ZGUvd2luZG93cy5oXQoJSW50cm9kdWNlZCBuZXcgV2luOTggc3lzdGVtIGNvbG9ycy4KClR1ZSBTZXAgMTUgMTg6Mjk6NDUgMTk5OCBXZXNsZXkgRmlsYXJkbyA8ZWlnaHRrbm90c0Bhb2wuY29tPgoKCSogW2ZpbGVzL3Byb2ZpbGUuY10KCUFkZGVkIHN1cHBvcnQgaW4gUFJPRklMRV9Mb2FkV2luZUluaSBmb3IgLWNvbmZpZyBvcHRpb24KCgkqIFttaXNjL21haW4uY10gW2luY2x1ZGUvb3B0aW9ucy5oXQoJQWRkZWQgLWNvbmZpZyBvcHRpb24uCgpUdWUgU2VwIDE1IDE4OjIyOjI2IDE5OTggIFBldHRlciBSZWluaG9sZHRzZW4gPHBlcmVAdGQub3JnLnVpdC5ubz4KCgkqIFtkb2N1bWVudGF0aW9uL01ha2VmaWxlLmluXQoJTWFrZSBzdXJlIGRpcmVjdG9yeSBleGlzdHMgYmVmb3JlIGluc3RhbGxpbmcgaW50byBpdC4KClR1ZSBTZXAgMTUgMDE6NDc6MzMgMTk5OCAgUGFibG8gU2FyYXR4YWdhIDxwYWJsby5zYXJhY2hhZ2FAcGluZy5iZT4KCgkqIFtvbGUvbmxzLypdIFtvbGUvb2xlMm5scy5jXSBbaW5jbHVkZS93aW5ubHMuaF0KCUZpeGVkIGEgZmV3IGVycm9ycyBhbmQgY29tcGxldGVkIHNvbWUgTkxTIGZpbGVzLgoKTW9uIFNlcCAxNCAwMToyMzo0NSAxOTk4ICBKb3NlcGggUHJhbmV2aWNoIDxrbmlnaHRAYmFsdGltb3JlLnd3YXZlcy5jb20+CgoJKiBbaW5jbHVkZS9taXNjZW11LmhdIFttc2Rvcy9pbnRlcnJ1cHRzLmNdCglSZW1vdmVkIGEgY29tcGlsYXRpb24gd2FybmluZywgYWRkZWQgSU5UIDI1IHRvIHRoZSBsaXN0IG9mIGludGVycnVwdHMKCWNhbGxhYmxlIGZyb20gRE9TIGFwcGxpY2F0aW9ucywgYWRkZWQgYSBkZWJ1ZyBtZXNzYWdlIHdoZW4gdW5zdXBwb3J0ZWQKCWludGVycnVwdHMgYXJlIHVzZWQuCgpTdW4gU2VwIDEzIDE5OjU1OjIyIDE5OTggIExhd3NvbiBXaGl0bmV5IDxsYXdzb25fd2hpdG5leUBqdW5vLmNvbT4KCgkqIFtpZjE2MzIvcmVsYXkuY10KCUNhbGxQcm9jRXgzMlcgc2hvdWxkIG5vdCByZXZlcnNlIGFyZ3VtZW50cy4KClN1biBBdWcgMTcgMjE6MTg6MTIgMTk5OCAgRXJpYyBQb3VlY2ggIDxlcmljLnBvdWVjaEBsZW1lbC5mcj4KCgkqIFttdWx0aW1lZGlhL21pZGkuY10gW211bHRpbWVkaWEvaW5pdC5jXSBbbXVsdGltZWRpYS9tbXN5cy5jXSAKCSAgW2luY2x1ZGUvbXVsdGltZWRpYS5oXSBbaW5jbHVkZS9tbXN5c3RlbS5oXSAKCSAgW211bHRpbWVkaWEvTWFrZWZpbGUuaW5dIFttdWx0aW1lZGlhL21pZGlwYXRjaC5jXQoJICBbaWYxNjMyL211bHRpbWVkaWEuc3BlY10KCU1hZGUgTUlESSBpbnB1dCBhbmQgb3V0cHV0IGZ1bmN0aW9uYWwgb24gT1NTIGNhcGFibGUgc3lzdGVtcy4KCgkqIFttdWx0aW1lZGlhL3RpbWVyLmNdCglDaGFuZ2VzIHRvIHRyaWdnZXIgY2FsbGJhY2tzIGF0IHRoZSBhY2N1cmF0ZSBwYWNlIGV2ZW4gd2hlbgoJZmFrZSB0aW1lcnMgYXJlIHVzZWQuCg==