MjAwMi0xMi0zMSAgQmVuamFtaW4gUmVlZCAgPHJhbmdlckBiZWZ1bmsuY29tPgoKCSogbHRtYWluLmluIFtkYXJ3aW5dOiBkaXNhYmxlIGxhenkgbGlua2luZywgbmVlZGVkCgl0byByZXNvbHZlIEMrKyBnbG9iYWwgY29uc3RydWN0b3IgaXNzdWVzCgoyMDAyLTEyLTMwICBSYWxwaCBTY2hsZWljaGVyICA8cnNAbnVuYXRhay5hbGxnYWV1Lm9yZz4KCglSZXdvcmsgYnkgUm9iZXJ0IEJvZWhuZSA8cmJvZWhuZUBnbnUub3JnPgoJKiBsdG1haW4uaW46IE5ldyBsaW5rIG9wdGlvbiAtc2hyZXh0LgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX0NPTkZJRyk6IE5ldyBsaWJ0b29sIHZhcmlhYmxlIHNocmV4dC4KCShBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUik6IFJlcGxhY2UgYWxsIGhhcmQgY29kZWQgc2hhcmVkCglsaWJyYXJ5IGZpbGUgbmFtZSBleHRlbnNpb25zIGluIGxpYnJhcnlfbmFtZXNfc3BlYyBhbmQKCXNvbmFtZV9zcGVjIHdpdGggJHNocmV4dC4KCSogZG9jL2xpYnRvb2wudGV4aSAoTGluayBtb2RlKTogRG9jdW1lbnQgaXQuCgoyMDAyLTEyLTMwICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJRyk6IG1vZGlmeQoJJGFyY2hpdmVfZXhwc3ltX2NtZHMgdG8gcmVzdG9yZSBzdXBwb3J0IGZvciB1c2luZwoJLmRlZiBmaWxlcyB2aWEgdGhlIC1leHBvcnQtc3ltYm9scyBzd2l0Y2guCgkoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyhbVEFHTkFNRV0pOiBpbiBib3RoIHRoZSBbQ1hYXQoJYnJhbmNoIGFuZCB0aGUgZGVmYXVsdCBicmFuY2gsIGltcHJvdmUgJGV4cG9ydF9zeW1ib2xzX2NtZHMKCXNvIHRoYXQgREFUQSBzeW1ib2xzIGFyZSBwcm9wZXJseSAgbGFiZWxsZWQuICBJbiB0aGUgZGVmYXVsdAoJYnJhbmNoLCBkdXBsaWNhdGUgdGhlIF9DWFhfQ09ORklHIGNvcnJlY3Rpb24gZm9yCgkkYXJjaGl2ZV9leHBzeW1fY21kcy4KCjIwMDItMTItMzAgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfUkMpOiBBQ19QUk9HX1JDIGRvZXNuJ3QgZXhpc3QgLS0KCWJ1dCB3ZSBkbyBBQ19ERUZVTiBzb21ldGhpbmcgY2FsbGVkIExUX0FDX1BST0dfUkMuCglDYWxsIHRoYXQgaW5zdGVhZC4KCjIwMDItMTItMzAgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJRyk6IENvcHkgdGhlIHNlY3Rpb24KCWZvciBEYXJ3aW4gZnJvbSBBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTIHNvIHRoYXQgdGhlIENYWAoJdGFnIGRvZXNuJ3QgdXNlIHRoZSBnKysgZGVmYXVsdHMgZm9yIHRoZSBPUyBYIGNvbXBpbGVyLgoKMjAwMi0xMi0zMCAgQWxiZXJ0IENoaW4tQS1Zb3VuZyA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogU3luYyBtZXRob2RzIHVzZWQgdG8gZGV0ZWN0IEdOVSBsZC4KCjIwMDItMTItMjAgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTiwKCUFDX0xJQlRPT0xfUFJPR19DQ19DX08pOiBEbyBub3QgZXNjYXBlIH0gb3IgPyBpbiBzZWQgYXJndW1lbnQuCgoyMDAyLTEyLTE5ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluOiBVc2UgdGhlIHNlZCBwcm9ncmFtIGZvdW5kIGJ5IExUX0FDX1BST0dfU0VECglzbyB0aGF0IHJlbGluayBjb21tYW5kcyBkb24ndCBnZXQgdHJ1bmNhdGVkLgoKMjAwMi0xMi0xOCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGxpYnRvb2wubTQ6IE1vdmUgQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKSB0byBBQ19QUk9HX0xECglzbyBpdCBpcyBpbnZva2VkIGVhcmxpZXIuCgoyMDAyLTEyLTExICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxzbm93d29sZkBvbmUyb25lLW5ldHdvcmtzLmNvbT4KCgkqIGxpYnRvb2wubTQ6IEFkZCBzdXBwb3J0IGZvciBJbnRlbCBpY2MgY29tcGlsZXIgZm9yIExpbnV4LgoKMjAwMi0xMi0xMSAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbjogUmV2ZXJ0IHRoZSB2ZXJzaW9uICsxIGNoYW5nZSBmb3IgSVJJWCwgaXQgY291bGQKCWNhdXNlIGNvbXBhdGliaWxpdHkgcHJvYmxlbXMuCgoyMDAyLTExLTIyICBDaHJpc3RpYW4gQ29ybmVsc3NlbiAgPGNjb3JuQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OLAoJQUNfTElCVE9PTF9QUk9HX0NDX0NfTyk6IENoYW5nZWQgbWV0aG9kIGZvciBjb21waWxhdGlvbiB3aXRoCgljdXN0b20gZmxhZ3MgdG8gYmUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQuICBUaGVyZWJ5IHJlbW92ZWQKCUNGTEFHUy9HQ0pGTEFHUyBtaXh1cCBidWcuICBJbWl0YXRlIEF1dG9jb25mLXN0eWxlIGxvZ2dpbmcuCglMb2cgZW50cmllcyBubyBsb25nZXIgZGlzY2FyZGVkIGJ5IGNvbXBpbGF0aW9uIGZhaWx1cmVzLgoJKF9MVF9BQ19MQU5HX0NfQ09ORklHLCBfTFRfQUNfTEFOR19DWFhfQ09ORklHLAoJX0xUX0FDX0xBTkdfR0NKX0NPTkZJRyk6IFR1bmVkIHNldHRpbmdzIG9mCglsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUgYW5kIGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZQoJdG8gYXZvaWQgd2FybmluZ3MgdGhhdCBjb3VsZCBicmVhayBzb21lIG9wdGlvbiBkZXRlY3Rpb25zLgoJKEFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9OT19SVFRJKTogUmVtb3ZlZAoJcmVkdW5kYW50ICItYyBjb25mdGVzdC4kYWNfZXh0IiBpbiB0aGUgYXJndW1lbnQgdG8KCUFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OLgoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBSZXBsYWNlZCBDLXNwZWNpZmljIGNvbmZ0ZXN0Cglzb3VyY2UgY29kZSB3aXRoICRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUsIHRvIHN1cHBvcnQKCXRoZSAiLWxjIiB0ZXN0IHdpdGggb3RoZXIgbGFuZ3VhZ2VzLgoKMjAwMi0xMS0xOSAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJRG9uJ3QgYXNzdW1lIHRoYXQgZWdyZXAgYW5kIGZncmVwIGV4aXN0LiAgUE9TSVggMTAwMy4xLTIwMDEgbm8KCWxvbmdlciByZXF1aXJlcyB0aGVtOyB5b3UncmUgc3VwcG9zZWQgdG8gdXNlIGdyZXAgLUUgYW5kIGdyZXAgLUYKCWluc3RlYWQuICBBbHNvLCBkb24ndCBhc3N1bWUgdGhhdCAidGVzdCAtYSIgd29ya3MsIHNpbmNlIFBPU0lYCglkb2Vzbid0IHJlcXVpcmUgaXQuCgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUiwgX0xUX0FDX0xBTkdfQ19DT05GSUcsCglfTFRfQUNfTEFOR19DWFhfQ09ORklHLCBBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUsCglBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKToKCWVncmVwIC0+IGdyZXAsIHdoZW4gdGhhdCBtYWtlcyBubyBkaWZmZXJlbmNlLgoJKiBsaWJ0b29saXplLmluOiBMaWtld2lzZS4KCSogbHRkbC5tNCAoQUNfTFRETF9TWU1CT0xfVVNDT1JFKTogTGlrZXdpc2UuCgkqIGx0bWFpbi5pbjogTGlrZXdpc2UuCgkqIGRlbW8vTWFrZWZpbGUuYW0gKGhjLWRpcmVjdCk6IExpa2V3aXNlLgoJKiBwZGVtby9NYWtlZmlsZS5hbSAoaGMtZGlyZWN0KTogTGlrZXdpc2UuCgkqIHRlc3RzL2J1aWxkLXJlbGluay50ZXN0LCB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3QsCgl0ZXN0cy9jZGVtby1jb25mLnRlc3QsIHRlc3RzL2NkZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvY2RlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2RlbW8tY29uZi50ZXN0LAoJdGVzdHMvZGVtby1ub2Zhc3QudGVzdCwgdGVzdHMvZGVtby1zaGFyZWQudGVzdCwKCXRlc3RzL2RlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2RlcGRlbW8tY29uZi50ZXN0LAoJdGVzdHMvZGVwZGVtby1ub2Zhc3QudGVzdCwgdGVzdHMvZGVwZGVtby1zaGFyZWQudGVzdCwKCXRlc3RzL2RlcGRlbW8tc3RhdGljLnRlc3QsIHRlc3RzL2hhcmRjb2RlLnRlc3QsCgl0ZXN0cy9tZGVtby1jb25mLnRlc3QsIHRlc3RzL21kZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvbWRlbW8tc3RhdGljLnRlc3QsIHRlc3RzL3BkZW1vLWNvbmYudGVzdCwKCXRlc3RzL3RhZ2RlbW8tY29uZi50ZXN0LCB0ZXN0cy90YWdkZW1vLXNoYXJlZC50ZXN0LAoJdGVzdHMvdGFnZGVtby1zdGF0aWMudGVzdDogTGlrZXdpc2UuCgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0VHUkVQKToKCU5ldyBtYWNybywgZGVmaW5lZCBpZiBBdXRvY29uZiBkb2Vzbid0IGRlZmluZS4KCShBQ19QQVRIX1RPT0xfUFJFRklYLCBBQ19QUk9HX0xEX0dOVSk6IFVzZSBpdC4KCShBQ19QUk9HX0xELCBBQ19QUk9HX05NLCBBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUpOgoJVXNlIHNoZWxsIHBhdHRlcm4gbWF0Y2hpbmcgcmF0aGVyIHRoYW4gZWdyZXAuCgkoQUNfTElCVE9PTF9DT05GSUcpOiBTZXQgbHRfRUdSRVAgYW5kIEVHUkVQLgoKCSogZGVtby9NYWtlZmlsZS5hbSAoU0VUX0hBUkRDT0RFX0ZMQUdTKTogVXNlIHNlZCBpbnN0ZWFkIG9mIGVncmVwLgoJKiBwZGVtby9NYWtlZmlsZS5hbSAoU0VUX0hBUkRDT0RFX0ZMQUdTKTogTGlrZXdpc2UuCgoJKiB0ZXN0cy9kZWZzIChFR1JFUCwgRkdSRVApOiBOZXcgdmFycy4KCgkqIGx0bWFpbi5pbjogZWdyZXAgLT4gJEVHUkVQCgkqIHRlc3RzL2Fzc2lnbi50ZXN0LCB0ZXN0cy9kZW1vLWV4ZWMudGVzdCwgdGVzdHMvZGVtby1pbnN0LnRlc3QsCgl0ZXN0cy9wZGVtby1leGVjLnRlc3QsIHRlc3RzL3BkZW1vLWluc3QudGVzdCwgdGVzdHMvc2gudGVzdDoKCUxpa2V3aXNlLgoKCSogdGVzdHMvaGFyZGNvZGUudGVzdDogZmdyZXAgLT4gJEZHUkVQCgoJKiB0ZXN0cy9mNzdkZW1vLWV4ZWMudGVzdDogdGVzdCAtYSAtPiB0ZXN0ICYmCgoyMDAyLTExLTE4ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogbHRtYWluLmluOiBXaGVuIHVzaW5nIGdjYywgcGFzcyAtbWZvbyB0byB0aGUgbGlua2VyCgl2aWEgJGNvbXBpbGVyX2ZsYWdzIGluIG9yZGVyIHRvIHBhc3MgYXJjaGl0ZWN0dXJlIGluZm9ybWF0aW9uIHRvCgl0aGUgbGlua2VyIChlLmcuIDMyIHZzIDY0LWJpdCkuIFRoaXMgbWF5IGFsc28gYmUgYWNjb21wbGlzaGVkIHZpYQoJLVdsLC1tZm9vIGJ1dCB0aGlzIGlzIG5vdCByZWxpYWJsZSB3aXRoIGdjYyBiZWNhdXNlIGdjYyBtYXkgdXNlCgktbWZvbyB0byBzZWxlY3QgYSBkaWZmZXJlbnQgbGlua2VyLCBkaWZmZXJlbnQgbGlicmFyaWVzLCBldGMsIHdoaWxlCgktV2wsLW1mb28gc2ltcGx5IHBhc3NlcyAtbWZvbyB0byB0aGUgbGlua2VyLiBJZiB0aGVyZSBpcyBhIGJldHRlcgoJc29sdXRpb24sIHBsZWFzZSBsZXQgbWUga25vdyB3aGF0IGl0IGlzLgoKMjAwMi0xMS0xOCAgQm9iIEZyaWVzZW5oYWhuICA8YmZyaWVzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCgkqIHRlc3RzL01ha2VmaWxlLmFtOiBDb25kaXRpb25hbCBhc3NpZ25tZW50IG9mIEZGTEFHUyA9IEBGRkxBR1NACglkb2VzIG5vdCBhcHBlYXIgdG8gYmUgbmVjZXNzYXJ5IGdpdmVuIHRoYXQgQXV0b21ha2UgbWFrZXMgdGhpcwoJYXNzaWdubWVudCBieSBkZWZhdWx0LiAgVGhlIGNvbmRpdGlvbiBpcyByZW1vdmVkIHNpbmNlIEF1dG9tYWtlCgkxLjcuMSBjb21wbGFpbnMgYWJvdXQgaXQuCgoyMDAyLTExLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGxpYnRvb2wubTQ6IFN1cHBvcnQgbGlua2luZyBvZiA2NC1iaXQgbGlicmFyaWVzIG9uCglzcGFyY3ssdls3ODldfS0qbGludXgqLCBzMzkwKi0qbGludXgqLCBwcGMqLSpsaW51eCoKCUdOVS9MaW51eCBzeXN0ZW1zIHdoZW4gdGhlIHBsYXRmb3JtIGRlZmF1bHQgaXMgdG8gYnVpbGQKCTMyLWJpdCBsaWJyYXJpZXMuCgoyMDAyLTExLTE4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+LCBCbyBUaG9yc2VuICA8Ym9Ac3VzZS5kZT4KCgkqIGxpYnRvb2wubTQ6IFN1cHBvcnQgbGlua2luZyBvZiAzMi1iaXQgbGlicmFyaWVzIHdpdGggbGQKCW9uIHRoZSB4ODYtNjQsIHBwYzY0LCBzMzkweCBhbmQgc3BhcmM2NCBHTlUvTGludXggc3lzdGVtcy4KCjIwMDItMTEtMTggIEFraW0gRGVtYWlsbGUgIDxha2ltQGVwaXRhLmZyPgoKCSogbHRtYWluLmluOiBEbyBub3QgY2hhbmdlIHRoZSBQQVRIIGluIHRoZSB3cmFwcGVyczogbGV0IHRoZW0KCWxhdW5jaCB0aGUgcmVhbCBiaW5hcnkgdXNpbmcgaXRzIHBhdGguCgoyMDAyLTExLTE4ICBLZXZpbiBSeWRlICA8dXNlcjQyQHppcC5jb20uYXU+CgoJKiBkb2MvbGlidG9vbC50ZXhpIChMaWJyYXJ5IHRpcHMpOiBOb3RlIGFycmF5IGRpbWVuc2lvbnMuCgoyMDAyLTExLTE4ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogdGVzdHMvKi50ZXN0OiBNaW5HVydzIE1TWVMgdHJlYXRzIGZpbGVzIHVuZGVyIC9kZXYKCXNwZWNpYWxseS4gVGhpcyBjYXVzZXMgJ3Rlc3QgLXIgL2Rldi9udWxsL2NvbmZpZy9zaXRlJyB0bwoJaW1wcm9wZXJseSByZXBvcnQgc3VjY2VzcywgY2F1c2luZyBjb25maWd1cmUgdG8gZmFpbC4gQ2hhbmdlIHRoZQoJQ09ORklHX1NJVEUgZGVmaW5pdGlvbiBmcm9tICIvZGV2L251bGwvY29uZmlnL3NpdGUiIHRvCgkiL25vbmV4aXN0ZW50IiB0byBhdm9pZCB0aGlzIHByb2JsZW0uCgoyMDAyLTExLTE4ICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfTE9DSyk6IHJlbW92ZSBzdXBwb3J0IGZvciBhbmNpZW50Cgl2ZXJzaW9ucyBvZiBtaW5ndyBhbmQgY3lnd2luLgoJKEFDX0xJQlRPT0xfUE9TVERFUF9QUkVERVApOiBuZXcgZnVuY3Rpb24uCgltb3ZlZCB0aGUgImZpbmQgaGlkZGVuIGxpYnJhcnkgZGVwZW5kZW5jaWVzIiBjb2RlIGhlcmUKCWZyb20gQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcuICBBdHRlbXB0ZWQgdG8gbWFrZSBpdAoJbXVsdGktdGFnIGNvbXBhdGlibGUsIGJ1dCBjdXJyZW50bHkgb25seSBDWFggY2FsbHMgaXQuCgkoQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcpOiBzZXQKCWVuYWJsZV9zaGFyZWRfd2l0aF9zYXRpY19ydW50aW1lcyB0byAnbm8nIGJ5IGRlZmF1bHQKCVNldCBpdCB0byAneWVzJyBmb3IgY3lnd2luLCBtaW5ndywgcHczMi4gUmVwbGFjZQoJImZpbmQgaGlkZGVuIGxpYnJhcnkgZGVwZW5kZW5jaWVzIiBjb2RlIHdpdGggYSBjYWxsCgl0byB0aGUgbmV3IGZ1bmN0aW9uIEFDX0xJQlRPT0xfUE9TVERFUF9QUkVERVAuCglDb25zb2xpZGF0ZSBjeWd3aW4gYW5kIG1pbmd3L3B3MzIgc3Rhbnphcy4KCShBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJRyk6IHNldAoJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyB0byAnbm8nIGJ5IGRlZmF1bHQKCShBQ19MSUJUT09MX0NPTkZJRyk6IGFkZAoJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcyB0byB0aGUgbGlzdCBvZiB2YXJpYWJsZXMKCXRvIHdyaXRlIGludG8gbHRtYWluLnNoOyBpbmNsdWRlIGl0IGluIHRoZSBsaWJ0b29sIHNjcmlwdAoJdGVtcGxhdGUgYXMgYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzLgoJKEFDX0xJQlRPT0xfUFJPR19MRF9TSExJQlMpOiBzZXQKCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMgdG8gJ25vJyBieSBkZWZhdWx0CglTZXQgaXQgdG8gJ3llcycgZm9yIGN5Z3dpbiwgbWluZ3csIHB3MzIuCgkoQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFKTogb25seSBwdXQgY3IgaW4gcmVnZXhwCglpZiB0aGUgYnVpbGRfb3MgaXMgbWluZ3csIG5vdCBob3N0X29zCgoJKiBsdG1haW4uaW4gKGNhc2UgZGVwbGlic19jaGVja19tZXRob2QpOiBmb3IgYWxsIGFwcHJvcHJpYXRlCgljYXNlcywgaWYgYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzLCB0aGVuIHJlbW92ZQoJcHJlZGVwcyBhbmQgcG9zdGRlcHMgZnJvbSB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMgdGhhdCBtdXN0CgliZSBjaGVja2VkIGZvciAiZHluYW1pY25lc3MiLiAgRm9yIHRoZSAibm9uZSIgY2FzZSwgdGhlCglwcmVzZW5jZSBvZiBjb21waWxlci1nZW5lcmF0ZWQgcG9zdGRlcHMgYW5kIHByZWRlcHMgc2hvdWxkCglub3QgdHJpZ2dlciAiaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgbm90IHN1cHBvcnRlZCIgZXJyb3IuCgkoaW5pdGlhbCBzZXR1cCBhZnRlciBhcmcgcHJvY2Vzc2luZyk6IG9uIGN5Z3dpbi9taW5ndywgYWxsb3cKCWNvbXBpbGVyLWdlbmVyYXRlZCBkZXBlbmRlbnQgbGlicyB0byBiZSBkdXBsaWNhdGVkIHdpdGhvdXQKCWVsaW1pbmF0aW9uLgoJKGluaXRpYWwgc2VhcmNoIGxvb3AgZm9yIGRlcGxpYnMpOiBpZiB0aGUgZGVwbGliIGluIHF1ZXN0aW9uCglpcyBhIGxpYnRvb2wgbGliLCB0aGVuIGlmCglhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMgdGhlbiBwYXJzZSB0aGUgLmxhIGZpbGUuCglJZiB0aGUgLmxhIGZpbGUgb25seSBoYXMgYW4gIm9sZF9saWJyYXJ5IiwgYWRkIHRoZSBkZXBsaWIKCWRpcmVjdGx5IHRvIHRoZSBkZXBsaWJzIGxpc3QgKC1sc3RkYysrKSBhbmQgRE9OJ1QgdXNlIHRoZSAubGEKCWZpbGU7IHRoaXMgYWxsb3dzIHRoZSAoY2FzZSBkZXBsaWJzX2NoZWNrX21ldGhvZCkgY2hhbmdlIGFib3ZlCgl0byB0YWtlIGVmZmVjdC4KCSogbHRtYWluLmluIChmb3IgcGFzcyBpbiAkcGFzc2VzIGxvb3ApOiByZW1vdmUgcHJlZGVwcywKCXBvc3RkZXBzLCBhbmQgY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoIGZyb20gZGVwZW5kZW5jeV9saWJzLgoKMjAwMi0xMS0wOCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGRvYy9saWJ0b29sLnRleGk6IEFkZCAtLW1vZGU9KiB0byBldmVyeSBleGFtcGxlIHVzaW5nIGxpYnRvb2wuCgoyMDAyLTExLTAzICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQGRvYy5lY2UudWNpLmVkdT4KCgkqIGx0bWFpbi5pbjogYWRkIHN1cHBvcnQgZm9yIGluc3RhbGxpbmcgaW50byB0ZW1wb3JhcnkKCXN0YWdpbmcgYXJlYSAoZS5nLiAnbWFrZSBpbnN0YWxsIERFU1RESVI9Li4uJykKCjIwMDItMTEtMDMgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHKTogcmVzdG9yZSBzZXR0aW5nCglhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZCBmb3IgY3lnd2luIGFuZCBtaW5ndy4KCShBQ19MSUJUT09MX1BST0dfTERfU0hMSUJTKTogZGl0dG8sIGZvciBib3RoICJub3JtYWwiIGdjYy9sZAoJYW5kIGZvciB0aGUgKHVubWFpbnRhaW5lZD8pIE1TVkMgY2FzZS4KCjIwMDItMTEtMDMgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEluc3RhbGwgbW9kZSk6IGRvY3VtZW50IG5ldwoJLWluc3QtcHJlZml4IG9wdGlvbi4KCjIwMDItMTEtMDIgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsdG1haW4uaW46IFByaW50IGEgd2FybmluZyBpZiB0aGUgbW9kZSBpcyBub3Qgc3BlY2lmaWVkLgoJKiBkb2MvbGlidG9vbC50ZXhpOiBEb2N1bWVudCB0aGUgY2hhbmdlIHRoYXQgdGhlIG1vZGUgbXVzdCBiZQoJc3BlY2lmaWVkLgoKMjAwMi0xMC0zMCAgQ2hhcmxlcyBXaWxzb24gIDxjd2lsc29uQGVjZS5nYXRlY2guZWR1PgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0NDX0NfTyk6IHVzZSBwcmludGYsIG5vdAoJZWNoby4gKEFDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EKTogdXNlIG5ldyBzaGVsbCBmdW5jdGlvbgoJd2luMzJfbGliaWQgb24gdzMyIHBsYXRmb3JtcwoJKiBsdG1haW4uaW46IGFkZCBuZXcgc2VjdGlvbiBmb3Igc2hlbGwgZnVuY3Rpb25zLiBBZGQKCXdpbjMyX2xpYmlkKCkgc2hlbGwgZnVuY3Rpb24uCgkqIGY3N2RlbW8vTWFrZWZpbGUuYW06IGFkZCAtbm8tdW5kZWZpbmVkIGZsYWcKCjIwMDItMTAtMzAgIFJvYiBCcm93bmluZyAgPHJsYkBkZWZhdWx0dmFsdWUub3JnPgoKCSogbHRkbC5jIChyZWFsbG9jKTogUmVtb3ZlIGN1c3RvbSByZWFsbG9jLiAoI2RlZmluZQoJcnBsX3JlYWxsb2MgcmVhbGxvYykgYW5kIGNvbW1lbnQgb3V0IGxhdGVyIGNvZGUgZm9yIGN1c3RvbQoJcmVhbGxvYy4gWW91IGNhbid0IGRlZmluZSB5b3VyIG93biBtYWxsb2MgdW5sZXNzIHlvdSBrbm93Cgllbm91Z2ggYWJvdXQgdGhlIG1hbGxvYyBpbiB1c2UgdG8gYmUgYWJsZSB0byB0ZWxsIGhvdyBiaWcKCXRoZSBzcmMgcHRyIGlzLiBUaGUgZGlzYWJsZWQgY29kZSBpbmNvcnJlY3RseSB1c2VkIHRoZQoJKmRlc3RpbmF0aW9uKiBwdHIgdG8gZGVjaWRlIGhvdyBtdWNoIHRvIGNvcHkuIFRoaXMKCXNvbWV0aW1lcyByZXN1bHRzIGluIG91dC1vZi1ib3VuZCBhY2Nlc3NlcyB3aGljaCBjYXVzZQoJc2VnZmF1bHRzLiBUaGlzIGlzIGEgcXVpY2sgaGFjayBmb3Igbm93OyB3ZSBtYXkgd2FudAoJc29tZXRoaW5nIGNsZWFuZXIgbGF0ZXIuCgkodHJ5YWxsX2Rsb3Blbl9tb2R1bGUpOiBjaGVjayB0byBiZSBzdXJlIChkaXJuYW1lX2xlbiA+IDApIGJlZm9yZQoJdGVzdGluZyBmaXJzdCBjaGFyYWN0ZXIgYWdhaW5zdCAnLycuCgkodHJ5X2Rsb3Blbik6IGNoZWNrIGZvciBmZW9mKGZpbGUpIGluIHJlYWQgbG9vcCAtLSBvdGhlcndpc2UKCWluZmluaXRlIGxvb3A/CgoyMDAyLTEwLTI1ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluICgtWENDbGlua2VyKTogTmV3IGZsYWcgcGFzc2VzIGEgbGlua2luZyBvcHRpb24KCWRpcmVjdGx5IHRvIHRoZSBjb21waWxlciBkcml2ZXIgd2l0aG91dCBhcHBlbmRpbmcgJHt3bH0uCgoyMDAyLTEwLTI1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBSRUFETUUtYWxwaGE6IEFkZCBzb21lIHJlbGVhc2Ugbm90ZSB0ZW1wbGF0ZXMgZm9yIGluc3BpcmF0aW9uCglhbmQgY29uc2lzdGVuY3kgYXQgcmVsZWFzZSB0aW1lLgoKCSogTWFrZWZpbGUuYW0gKGN2cy1kaWZmKTogQ29tcHJlc3MgdGhlIGdlbmVyYXRlZCBkaWZmIGZpbGUsIHJlYWR5Cglmb3IgdXBsb2FkIHRvIGZ0cC5nbnUub3JnLgoKMjAwMi0xMC0yNSAgSG93YXJkIENodSAgPGh5Y0BoaWdobGFuZHN1bi5jb20+CgoJKiBsdG1haW4uaW4gW2FpeF06IEJlIHN1cmUgdG8gZGVhbCB3aXRoIHhsY19yLCBjY19yIGFuZCBvdGhlcgoJY29tcGlsZXIgdmFyaWFudHMuCgoyMDAyLTEwLTI1ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChfTFRfQUNfRklMRV9JTVBHRU5fQyk6IFJlbW92ZWQuICBObyBsb25nZXIgdXNlZC4KCShfTFRfQUNfRklMRV9MVERMTF9DKTogRGl0dG8uCgkoQUNfTElCVE9PTF9DT05GSUcpIFtjeWd3aW4sIG1pbmd3LCBwdzMyLCBvczJdOiBEb24ndCBjYWxsCglfTFRfQUNfRklMRV9MVERMTF9DIG9yIF9MVF9BQ19GSUxFX0lNUEdFTl9DLgoKMjAwMi0xMC0yNSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFdoZW4gTERGTEFHUz0iLVdsLC1icnRsLFtvdGhlciBvcHRpb25zXSIsIHRoZQoJLWJydGwgc3BlY2lhbC1jYXNlIGNvZGUgZm9yIEFJWCBuZXZlciBnZXRzIHRyaWdnZXJlZCBiZWNhdXNlCgl3ZXJlIGFyZSBiZWluZyB0b28gc3BlY2lmaWMgYWJvdXQgaG93IHdlIHNlYXJjaCBmb3IgLWJydGwuCglVc2UgY2FzZSBzdGF0ZW1lbnQgdG8gYXZvaWQgdGhpcy4gUmVtb3ZlIGV4dHJhbmVvdXMKCXNlbWljb2xvbi4KCSogbHRtYWluLmluOiBSZWNvZ25pemUgdGhlIElCTSB4bGMgY29tcGlsZXIuCgoyMDAyLTEwLTI0ICBBbmRyZXcgU3VmZmllbGQgIDxhc3VmZmllbGRAZGViaWFuLm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChsdF9kbG9wZW5leHQpOiBDb3JyZWN0ZWQgc2Vuc2Ugb2YgImZpbGUgbm90Cglmb3VuZCIgY2hlY2suCgoyMDAyLTEwLTI0ICBPc3NhbWEgT3RobWFuICA8b3NzYW1hQGRvYy5lY2UudWNpLmVkdT4KCgkqIGx0bWFpbi5pbjogU3VwcG9ydCBjb21waWxlciBuYW1lcyBtYXRjaGluZyBnKysqCgoyMDAyLTEwLTIzICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogbGlidG9vbC5tNDogUmVtb3ZlZCBvbGQgV2luZG93cyBjcnVmdC4KCSogbGlidG9vbC5tNDogQWRhcHRlZCBwdzMyIHRvIGJlIGxpa2UgQ3lnd2luL01pbkdXLgoKMjAwMi0xMC0yMyAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCglsdG1haW4uaW46IERvIG5vdCBhZGQgMSB0byB0aGUgdmVyc2lvbiB1bmRlciBJUklYLCBpdCBpcwoJbm90IG5lY2Vzc2FyeS4KCjIwMDItMTAtMTUgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOKTogYXZvaWQgbG9uZyBkZWxheSBvbgoJIGN5Z3dpbi9XaW45eCB3aGVuIGNvbXB1dGluZyBjb21tYW5kbGluZSBsZW5ndGguCgkoQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIpOiBmaXggcG9zdGluc3RhbGxfY21kcyB3aGVuCglzb3VyY2VzIGFyZSBpbiBhIHN1YmRpcmVjdG9yeQoJKiBsdGRsLm00IChBQ19MVERMX1NZU1NFQVJDSFBBVEgpOiB1c2UgJFBBVEhfU0VQQVJBVE9SLCBub3QKCSRhY19wYXRoX3NlcGFyYXRvcgoJKiBjb25maWd1cmUuYWM6IG1vdmUgZGVwZGVtby1zcGVjaWZpYyBzdHVmZi4gIFlvdSBtdXN0IGNvbmZpZ3VyZQoJbGlidG9vbCBiZWZvcmUgeW91IGNhbiB0cnkgJy4vbGlidG9vbCAtLWZlYXR1cmVzJy4KCSogbWRlbW8taW5zdC50ZXN0OiBzZXQgJFBBVEggdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoCgl0aGUgbW9kdWxlcyBhcmUgaW5zdGFsbGVkIChvbiBjeWd3aW4sIERMTCBzZWFyY2ggcGF0aCBpcyB0aGUKCSRQQVRIKQoKMjAwMi0xMC0xNSAgQm9iIEZyaWVzZW5oYWhuIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgoKCSogbHRtYWluLmluOiBNaW5HVyB3b3JrcyBpZGVudGljYWxseSB0byBDeWd3aW4uCgkqIGxpYnRvb2wubTQ6IGx0X2N2X3N5c19tYXhfY21kX2xlbiBoYXJkLWNvZGVkIHRvIDgxOTIKCSogIE1vZGVsIE1pbkdXIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgQ3lnd2luIGNvbmZpZ3VyYXRpb24uCglTb21lIHBvcnRpb25zIHNoYXJlIGltcGxlbWVudGF0aW9uLgoKMjAwMi0xMC0xNSAgRWxpemFiZXRoIEJhcmhhbSA8c29nZ3l0cm91c2Vyc0B5YWhvby5jb20+CgoJKiBsaWJ0b29sLm00OiBQYXR0ZXJuIE1pbkdXIGxpYnJhcnkgbmFtaW5nIGFmdGVyIHRoYXQKCXVzZWQgYnkgQ3lnd2luIGV4Y2VwdCB1c2UgJ2xpYicgcHJlZml4IHJhdGhlciB0aGFuICdjeWcnLgoJKiBUcmFuc2ZlciBzb21lIGNvbmZpZ3VyYXRpb24gZnJvbSBDeWd3aW4gd2l0aCBhZGp1c3RtZW50cwoJZm9yIE1pbkdXLgoKMjAwMi0xMC0xNSAgQWxiZXJ0IENoaW4tQS1Zb3VuZyAgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFdoZW4gYSBtb2R1bGUgaXMgYnVpbHQgZm9yIEFJWCwgdGhlICdsaWInCglwcmVmaXggaXNuJ3QgbmVlZGVkLCBuZWl0aGVyIGlzIHRoZSB2ZXJzaW9uLiBBSVggZGxvcGVuCgl3aWxsIGhvbm9yIHRoZSBSUEFUSCBpbiBhIGxpYnJhcnkuCgoyMDAyLTEwLTExICBDaHJpc3RvcGggRWdnZXIgIDxDaHJpc3RvcGhfRWdnZXJAZ214LmRlPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUywgZGFyd2luKTogQWRkCgktaW5zdGFsbF9uYW1lIHRvIHRoZSBsaW5rIGxpbmUgb25seSB3aGVuIC1keW5hbWljbGliIGlzCglzcGVjaWZpZWQgZm9yIGEgbW9kdWxlLiAgVXNlIC1iaW5kX2F0X2xvYWQgd2hlbiBsaW5raW5nIEMrKwoJc2hhcmVkIGxpYnJhcmllcy4KCjIwMDItMTAtMDQgIEVsaXphYmV0aCBCYXJoYW0gIDxzb2dneXRyb3VzZXJzQHlhaG9vLmNvbT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVApOiBHQ0Mgbm93IGNoZWNrcyAtc2hhcmVkIHRvCgljcmVhdGUgYSBkbGwgZm9yIFdpbmRvd3MgdGFyZ2V0cy4KCjIwMDItMDktMjQgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsdG1haW4uaW46IEZpeGVkIGEgZmV3IHNwZWxsaW5nIGVycm9ycy4KCjIwMDItMDktMTcgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYzogQ29tbWVudGVkIG91dCBhY2Nlc3MoKSBjYWxsIHRoYXQgY2hlY2tzIGZvciBhCglsaWJyYXJ5IGZpbGUncyBleGlzdGVuY2UgYW5kIHBlcm1pc3Npb25zLCBhcyBpdCBhcHBlYXJzIHRvIGZhaWwKCWluIGV2ZXJ5IGNhc2UuCgoyMDAyLTA5LTA5ICBBbGJlcnQgQ2hpbi1BLVlvdW5nICA8Y2hpbmFAdGhld3JpdHRlbndvcmQuY29tPgoKCSogbGlidG9vbC5tNDogQ3VzdG9tICRzeW1jb2RlIGZvciBUcnU2NCBVTklYIHRvIGNhdGNoICdRJywKCXJlYWQtb25seSBjb25zdGFudHMuCgoyMDAyLTA5LTA5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5kZT4KCgkqIGxpYnRvb2wubTQgKG9zZlszNDVdKTogQXBwZW5kICRtYWpvciB0byBzb25hbWVfc3BlYy4KCVJlZmxlY3QgdGhpcyBpbiBsaWJyYXJ5X25hbWVzX3NwZWMuCgkqIGx0bWFpbi5pbiAob3NmKTogUHJlZml4ICRtYWpvciB3aXRoICcuJyBmb3IgdXNlIGFzIGV4dGVuc2lvbi4KCjIwMDItMDgtMjggIEJvYiBGcmllc2VuaGFobiAgPGJmcmllc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiBsdGRsLm00ICYgbGlibHRkbC9sdGRsLmM6IFBvcnQgZnVsbHkgdG8gbmF0aXZlIFdpbjMyIEFQSS4KCjIwMDItMDctMzEgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBmNzdkZW1vLy5jdnNpZ25vcmU6IE5ldyBmaWxlLCBmb3Jnb3R0ZW4gaW4gdGhlIGxhc3QgY29tbWl0LgoKMjAwMi0wNy0zMSAgRXJpYyBMaW5kYWhsICA8ZXJpa0B0aGVvcGh5cy5rdGguc2U+CgoJKiBsaWJ0b29sLm00IChBQ19QUk9HX0xJQlRPT0wpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgbmV3IEY3NwoJRm9ydHJhbiBzdXBwb3J0IHRhZy4KCShBQ19MSUJUT09MX1BST0dfQ0NfQ19PLCBfTFRfQUNfVEFHQ09ORklHKTogU3VwcG9ydCBGNzcgdGFnLgoJKEFDX0xJQlRPT0xfRjc3LCBfTFRfQUNfTEFOR19GNzcsIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHKToKCU5ldyBtYWNyb3MgZm9yIEY3NyB0YWcgRm9ydHJhbiBzdXBwb3J0LgoJKiBjb25maWd1cmUuYWM6IEFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyB0aGUgbmV3IEY3NyB0YWcuCgkqIGJvb3RzdHJhcDogQWRkIGY3N2RlbW8gZGlyZWN0b3J5IHRvIHRoZSBsaXN0IHRvIGJlIHByb2Nlc3NlZC4KCSogTWFrZWZpbGUuYW06IEFkZCBzdXBwb3J0IGZvciBGRkxBR1MgYW5kIEZMSUJTLgoJKiB0ZXN0cy9NYWtlZmlsZS5hbTogQWRkIG5ldyBGb3J0cmFuIHRlc3RzLgoJKiB0ZXN0cy9mNzdkZW1vLSoudGVzdDogTmV3IGZpbGVzLgoJKiBmNzdkZW1vL2NvbmZpZ3VyZS5hYywgZjc3ZGVtby9jcHJvZ3JhbS5jLCBmNzdkZW1vL2Zvb2MuYwoJKiBmNzdkZW1vL2Zvb2YuZiwgZjc3ZGVtby9mb28uaCwgZjc3ZGVtby9mcHJvZ3JhbS5mCgkqIGY3N2RlbW8vTWFrZWZpbGUuYW0sIGY3N2RlbW8vUkVBRE1FOiBOZXcgZmlsZXMuCgoyMDAyLTA3LTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAodHJ5YWxsX2Rsb3Blbik6IFdlIG5lZWQgdG8gY2F0Y2ggbWlzc2luZyBmaWxlCgllcnJvcnMgZWFybHkgc28gdGhhdCBmaWxlX25vdF9mb3VuZCgpIGNhbiBkZXRlY3Qgd2hhdCBoYXBwZW5lZC4KCjIwMDItMDYtMjYgIEJvYiBGcmllc2VuaGFobiAgPGJmcmVpc2VuQHNpbXBsZS5kYWxsYXMudHgudXM+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUikgW21pbmd3XTogUmVtb3ZlCglleHRyYW5lb3VzICc9JyBjaGFyYWN0ZXIgd2hpY2ggYXBwZWFycyBpbiBnY2MgMy4xCgktcHJpbnQtc2VhcmNoLWRpcnMgb3V0cHV0LgoJSGFuZGxlIGJvdGggdXBwZXIgYW5kIGxvd2VyIGNhc2UgZHJpdmUgbGV0dGVycyB3aGVuIHRlc3RpbmcgZm9yCglXaW5kb3dzIHZzIFBPU0lYIHN0eWxlIHBhdGggb3V0cHV0IGZyb20gLXByaW50LXNlYXJjaC1kaXJzCglvdXRwdXQuCgoyMDAyLTA2LTI0ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluIChQaWVjZXdpc2UgbGlua2luZyk6IEFkZCBhIGNsYXVzZSB0byBza2lwIGNyZWF0aW5nCgl0aGUgZXhwb3J0IGZpbGUgdW50aWwgdGhlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUocykgaGF2ZSBiZWVuCgljcmVhdGVkLCB0aGVuIHVzZSB0aGVtIGFzIGlucHV0IGZvciAkZXhwb3J0X3N5bWJvbHNfY21kcy4KCjIwMDItMDYtMjMgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJKiBsdGRsLm00IChBQ19MVERMX1NZU19ETE9QRU5fREVQTElCUyk6IE5lZWQgdG8gcXVvdGUgWyBhbmQgXSBmb3IKCUF1dG9jb25mLgoKCSogbHRkbC5tNCAoQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlMpOiBIUC9VWCBuZWVkcwoJbGlibHRkbF9jdl9zeXNfZGxvcGVuX2RlcGxpYnMgc2V0IHRvIHllcy4KCjIwMDItMDYtMjMgIEtldmluIFJ5ZGUgIDx1c2VyNDJAemlwLmNvbS5hdT4KCgkqIGxpYnRvb2wubTQgKEFDX0xJQlRPT0xfU0VUVVAsIF9MVF9BQ19MT0NLKTogVXNlCglBQ19QUk9WSURFX0lGRUxTRSB0byB0ZXN0IEFDX0xJQlRPT0xfV0lOMzJfRExMIGFuZAoJQUNfTElCVE9PTF9ETE9QRU4sIG5lY2Vzc2FyeSBmb3IgYXV0b2NvbmYgMi41My4KCjIwMDItMDYtMjMgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIGxpYmx0ZGwvbHRkbC5jIChhcmd6X2luc2VydCk6IEFjdHVhbGx5LCBCRUZPUkUgY2FuIGJlIE5VTEwKCXdoZW4gKlBBUkdaX0xFTiBpcyBub24tTlVMTCwgc28gdGhlIGFzc2VydGlvbiB0byB0aGUgY29udHJhcnkgd2FzCglib2d1cy4KCVJlcG9ydGVkIGJ5IEJvYiBGcmllc2VuaGFobiA8YmZyZWlzZW5Ac2ltcGxlLmRhbGxhcy50eC51cz4KCWFuZCBBbGJlcnQgQ2hpbi1BLVlvdW5nIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoyMDAyLTA2LTIxICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBsaWJsdGRsL2x0ZGwuYyAoZm9yZWFjaF9kaXJpbnBhdGgpOiBFbnN1cmUgdGhhdCBmaWxlbmFtZSBpcyAnXDAnCgl0ZXJtaW5hdGVkIGJ5IGFsbCBjb2RlIHBhdGhzLgoJUmVwb3J0ZWQgYnkgTHV0eiBN/GxsZXIgPGx1dHpAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKMjAwMi0wNi0yMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZyb20gS2V2aW4gUnlkZSAgPHVzZXI0MkB6aXAuY29tLmF1PjoKCSogZG9jL2xpYnRvb2wudGV4aSAoUGxhdGZvcm0gcXVpcmtzKTogcy9kZXBlbmRhbi9kZXBlbmRlbi8KCSogbGlidG9vbC5tNCAoQUNfREVQTElCU19DSEVDS19NRVRIT0QpOiBEaXR0by4KCSogVE9ETzogRGl0dG8uCgoyMDAyLTA2LTEzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGx0bWFpbi5pbiAoaXJpeCwgbm9uc3RvcHV4KTogU2V0IG1ham9yIGJlZm9yZSB1c2UuCgoyMDAyLTA2LTExICBEYW5pZWwgS29icmFzICA8a29icmFzQGxpbnV4LmRlPgoKCSogbGlibHRkbC9sdGRsLmMgKHRyeV9kbG9wZW4pOiBEb24ndCByZXR1cm4gYm9ndXMgaGFuZGxlIHRvIHVzZXIKCSAgaWYgdHJ5YWxsX2Rsb3BlbigpIGZhaWxzLgoKMjAwMi0wNi0wMSAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogdGVzdHMvcGRlbW8tZXhlYy50ZXN0OiBUeXBvLiAgcy9oZWxsLXN0YXRpYy9oZWxsX3N0YXRpYy8KCjIwMDItMDUtMzEgIENoYXJsZXMgV2lsc29uICA8Y3dpbHNvbkBlY2UuZ2F0ZWNoLmVkdT4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIGxpYnRvb2wubTQ6IHVzZSAkTk0gdG8gY3JlYXRlIHRoZSBzeW1ib2wgbGlzdCBvbiBjeWd3aW4sIG5vdAoJJGx0ZGxsX2NtZHMgYXMgb24gbWluZ3cuICBGb3IgYWxsIHRhZ3MsIChhbmQgaG9zdD1jeWd3aW4pIHNldAoJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiIgc28gdGhhdCB0aGUgLS1hdXRvLWltcG9ydCBtYWdpYwoJd29ya3MgcHJvcGVybHkuICBGb3IgYWxsIHRhZ3MgKGFuZCBob3N0PWN5Z2l3bikgc2V0CglhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8gLS0gaXQgaXMgdW5uZWNlc3NhcnkgdGhhbmtzIHRvCgliaW51dGlscycgYXV0by1leHBvcnQgbWFnaWMuCgkqIGxpYmx0ZGwvbHRkbC5jOiBEb24ndCBmb3JjZSBjeWd3aW4gdG8gdXNlIHRoZSBMb2FkTGlicmFyeQoJd3JhcHBlcjsgdXNlIGN5Z3dpbidzIGJ1aWx0aW4gaW1wbGVtZW50YXRpbm8gb2YgZGwqLgoJKiBjZGVtby9NYWtlZmlsZS5hbTogdGhlIGRvd25zaWRlIG9mIHVuc2V0dGluZwoJJ2FsbG93X3VuZGVmaW5lZF9mbGFnJyAtLSB3ZSBtdXN0IGluY2x1ZGUgLW5vLXVuZGVmaW5lZAoJaW4gdGhlIF9sYV9MREZMQUdTIHZhcmlhYmxlLgoJKiBkZXBkZW1vL2wxL01ha2VmaWxlLmFtOiBkaXR0by4KCSogZGVwZGVtby9sMi9NYWtlZmlsZS5hbTogZGl0dG8uCgkqIGRlcGRlbW8vbDMvTWFrZWZpbGUuYW06IGRpdHRvLgoJKiBkZXBkZW1vL2w0L01ha2VmaWxlLmFtOiBkaXR0by4KCSogbWRlbW8vTWFrZWZpbGUuYW06IGRpdHRvLgoJKiB0YWdkZW1vL01ha2VmaWxlLmFtOiBkaXR0by4KCSogZGVtby9NYWtlZmlsZS5hbTogZGl0dG8uICBCdXQgYWxzbywgd2UgbXVzdCBtYWtlIHNwZWNpYWwKCXByb3Zpc2lvbiB0byBjbGVhbiB1cCB0aGUgaGVsbDAgd3JhcHBlciBzY3JpcHQuCgkqIHBkZW1vL01ha2VmaWxlLmFtOiBkaXR0byAtbm8tdW5kZWZpbmVkLiAgZGl0dG8gaGVsbDAuCglBbmQgdXNlICdoZWxsX3N0YXRpYycgaW5zdGVhZCBvZiAnaGVsbC5zdGF0aWMnLgoJKiB0ZXN0cy9wZGVtby1pbnN0LnRlc3Q6IHVzZSAnaGVsbF9zdGF0aWMnIGluc3RlYWQKCW9mICdoZWxsLnN0YXRpYycuCgkqIHRlc3RzL3BkZW1vLWV4ZWMudGVzdDogZGl0dG8uCgoyMDAyLTA1LTMwICBDaGFybGVzIFdpbHNvbiAgPGN3aWxzb25AZWNlLmdhdGVjaC5lZHU+CgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsyLnRlc3Q6IGxvb2sgZm9yIGluc3RhbGxlZCBsaWJsMy5sYQoJaW4gJHByZWZpeC9saWIvIGFzIHdlbGwgYXMgJHByZWZpeC9saWIvZXh0cmEvLgoKMjAwMi0wNS0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCSogdGVzdHMvaGFyZGNvZGUudGVzdDogVXNlIGxpYnRvb2wgLS1jb25maWcgdG8gY29sbGVjdCB0aGUKCXZhcmlhYmxlIHZhbHVlcyBmb3IgdGhlIHRlc3QsIG90aGVyd2lzZSB0aGUgdGFnIHZhbHVlcyBpbnRlcmZlcmUKCXdpdGggYSBzdHJhaWdodCBncmVwLgoKMjAwMi0wNS0zMCAgR2FyeSBWLiBWYXVnaGFuICA8Z2FyeUBnbnUub3JnPgoKCUZpbmFsbHkgZml4IHRoZSBhbm5veWluZyBidWcgd2hpY2ggYWx3YXlzIGFkZHMgYWxsIHRhZ3MgdG8gdGhlCglsaWJ0b29sIHNjcmlwdCBidWlsdCBieSB5b3VyIHByb2plY3QgY29uZmlndXJlLiAgTm93IHdlIHNldCB0aGUKCWRlZmF1bHQgdGFncyBkZXBlbmRpbmcgb24gd2hldGhlciBBQ19QUk9HX0NYWCBldC4gYWwuIGFyZSBhY3R1YWxseQoJY2FsbGVkIGZyb20gY29uZmlndXJlLmFjLgoKCSogbGlidG9vbC5tNCAoX0xUX0FDX1RBR0NPTkZJRyk6IERvbid0IGRlZmF1bHQgdGhlIHRhZ25hbWVzIHdoZW4KCW5vIC0td2l0aC10YWdzIGFyZ3VtZW50IGlzIGdpdmVuLgoJKF9MVF9BQ19TSEVMTF9JTklUKTogRmFjdG9yZWQgb3V0IGZyb20gdGhlIEFDX0RJVkVSVF9QVVNIIGNvZGUKCWluLi4uCgkoX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gpOiAuLi53aGljaCBub3cgY2FsbHMgdGhlIG1hY3JvCglpbnN0ZWFkLgoJKEFDX0xJQlRPT0xfQ1hYKTogVXNlIF9MVF9BQ19TSEVMTF9JTklUIHRvIGFkZCBDWFggdG8gdGhlCglpbml0aWFsaXNhdGlvbiBzZXF1ZW5jZSBmb3IgdGFnbmFtZXMuCgkoQUNfTElCVE9PTF9HQ0opOiBTaW1pbGFybHkgZm9yIEdDSiB0YWcuCgkoQUNfTElCVE9PTF9SQyk6IExpa2V3aXNlIGZvciBSQyB0YWcuCgoyMDAyLTA1LTIxICBKb24gTWVyZWRpdGggIDxqb25tQGFsY2hlbWV0cmljcy5jby51az4KCgkqIGx0bWFpbi5pbjogRml4IGEgcHJvYmxlbSBvbiBTQ08gT3BlblNlcnZlcjUgdGhhdCBjYXVzZWQgYQoJZmFpbHVyZSBpbiB0aHJlZSBkZXBkZW1vLW1ha2UgdGVzdHMuIEZvciBzb21lIHJlYXNvbiB0aGUgbGlua2VyCgl0cmllcyB0byBmaW5kIHRoZSBkZXBlbmRlbnQgbGlicmFyaWVzIHVzaW5nIHRoZSBsaWJyYXJ5IHNlYXJjaAoJcGF0aCBiZWZvcmUgaXQgaGFzIHJlYWQgdGhlIGxpYnJhcmllcyBzcGVjaWZpZWQgd2l0aCBhYnNvbHV0ZQoJcGF0aHMgaW4gdGhlIGZ1bGwgY29tbWFuZGxpbmUuIFRoaXMgcGF0Y2ggYWRkIC1MJ3MgZm9yIGVhY2ggb2YKCXRoZSBkZXBlbmRlbnQgbGlicmFyeSBkaXJlY3RvcmllcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHJlc29sdmVkLgoKMjAwMi0wNS0wOSAgTmljayBIdWRzb24gIDxza3JsbEBuZXRic2Qub3JnPgoKCSogbGlidG9vbC5tNDogVXBkYXRlIHN1cHBvcnQgZm9yIE5ldEJTRAoJKiBsdGRsLm00OiBNYWtlIHN1cmUgdGhhdCBsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuIGFuZAoJbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuIGFyZSBzZXQgYW5kIHVzZWQgaW5zdGVhZCBvZiB0aGUKCWFjX2N2XyB2ZXJzaW9ucy4gQWxzbywgdXNlIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUKCWluc3RyZWFkIG9mIGdsb2JhbF9zeW1ib2xfcGlwZS4gVGhpcyBmaXhlcyB0aGUgZGV0ZWN0aW9uIG9mCglkbG9wZW4gb24gQlNEIGRlcml2ZWQgcGxhZm9ybXMgYW5kIG1vcmUgaW1wb3J0YW50bHkgZml4ZXMKCW5lZWRfdXNjb3JlIGRldGVjdGlvbi4KCjIwMDItMDUtMDYgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IGhlYWQgLTEgLT4gc2VkIDFxIHRvCglwb3J0IHRvIFBPU0lYIDEwMDMuMS0yMDAxIGhvc3RzLCBsaWtlIHRleHR1dGlscyAyLjAuMjEgd2l0aAoJX1BPU0lYMl9WRVJTSU9OPTIwMDExMi4KCjIwMDItMDUtMDYgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogbHRtYWluLmluOiBEb24ndCBhc3N1bWUgdGhhdCAic29ydCArMiIgd29ya3MsIGFzIFBPU0lYCgkxMDAzLjEtMjAwMSBzYXlzIHRoYXQgInNvcnQgKzIiIGlzIHN1cHBvc2VkIHRvIHNvcnQgdGhlIGZpbGUKCW5hbWVkICIrMiIuICBBbiBleGFtcGxlIGhvc3QgdGhhdCBiZWhhdmVzIGxpa2UgdGhpcyBpcwoJdGV4dHV0aWxzIDIuMC4yMSB3aXRoIF9QT1NJWDJfVkVSU0lPTj0yMDAxMTIuCgoyMDAyLTA1LTA2ICBMb3JlbiBKYW1lcyBSaXR0bGUgIDxyaXR0bGVAbGF0b3VyLnJzY2guY29tbS5tb3QuY29tPgoKCSogbHRtYWluLmluOiBEZXRlY3QgYW5kIGhhbmRsZSBvYmplY3QgbmFtZSBjb25mbGljdHMgd2hpbGUKCXBpZWNld2lzZSBsaW5raW5nIGEgc3RhdGljIGxpYnJhcnkuCgoyMDAyLTA1LTAyICBEYXZlIFZhc2lsZXZza3kgIDx0aGV2YXNAbWFjLmNvbT4KCgkqIGx0bWFpbi5pbjogUmVtb3ZlIGNvbnZlbmllbmNlIGxpYnJhcmllcyBmcm9tIGRlcGxpYnMgZm9yIERhcndpbi4KCjIwMDItMDUtMDIgIEZyaXR6IEVsZmVydCAgPGZlbGZlcnRAdG8uY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyk6IE1vZGlmeSBhcmNoaXZlX2V4cHN5bV9jbWRzCgl0byBjYXRjaCBwcm9wZXJseSBoYW5kbGUgZGxsIGFsaWFzIHN5bWJvbHMuCgoyMDAyLTA0LTI0ICBLZXZpbiBSeWRlICA8dXNlcjQyQHppcC5jb20uYXU+CgoJKiBsaWJ0b29sLm00IChBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTik6IFVzZSAkYnVpbGRfb3Mgbm90ICRob3N0X29zLgoKMjAwMi0wNC0xNCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAZ251Lm9yZz4KCgkqIGRvYy9saWJ0b29sLnRleGkgKEMrKyBsaWJyYXJpZXMpOiBGaW5hbGx5IHVwZGF0ZWQgdG8gcmVmbGVjdAoJTGlidG9vbCdzIHN1cHBvcnQgZm9yIEMrKy4KCjIwMDItMDQtMTQgIEplYW4tRnJlZGVyaWMgQ2xlcmUgIDxqZnJlZGVyaWMuY2xlcmVAZnVqaXRzdS1zaWVtZW5zLmNvbT4KCgkqIGxpYnRvb2wubTQ6IFVwZGF0ZSBzdXBwb3J0IGZvciBGdWppc3R1LVNpZW1lbnMgQ29tcHV0ZXJzIChGU0MpLgoJKiBsdG1haW4uaW46IEFkZCBzdXBwb3J0IGZvciBFQkNESUMgYmFzZWQgc3lzdGVtcy4KCjIwMDItMDQtMDcgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsaWJ0b29sLm00IChMVF9BQ19QUk9HX1NFRCk6IFJlZmFjdG9yLCByZW1vdmluZyB0ZW1wb3JhcnkgZGlyZWN0b3J5CglhbmQgY29uc2lzdGVudCB1c2Ugb2YgdGhlIHNoZWxsIHZhcmlhYmxlIG5hbWVzcGFjZSAibHRfYWNfIi4KCjIwMDItMDQtMDIgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQGdudS5vcmc+CgoJKiBsdG1haW4uaW46IEZpbmlzaCB0aGUgdGFnIG1hdGNoaW5nIGxvZ2ljIHN0YXJ0ZWQgeWVzdGVyZGF5IGFuZAoJcmVmYWN0b3IgaXQgYSBiaXQuCgoyMDAyLTA0LTAxICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogbHRtYWluLmluOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiBubyB0YWcgaXMgZXhwbGljaXRseSBzZXQsIGFuZAoJJGJhc2VfY29tcGlsZSBoYXMgYSBzcGFjZSBpbiBmcm9udCBvZiAkQ0MsIGFuZCByZXZlcnQgdGhlIHNldHRpbmcKCW9mIHRhZ25hbWUgY2hlY2tlZCBpbiBvbiAyMDAyLTMtMTQuCgoyMDAyLTA0LTAxICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCSogdGFnZGVtby9mb28uY3BwOiBVc2UgQysrIElPIHRvIGNhdGNoIHByb2JsZW1zIGxpbmtpbmcgdG8gQysrCglydW50aW1lIGxpYnJhcmllcy4KCSogdGFnZGVtby9tYWluLmNwcDogRGl0dG8uCgoyMDAyLTAzLTE2ICBHYXJ5IFYuIFZhdWdoYW4gIDxnYXJ5QGdudS5vcmc+CgoJKiBUT0RPOiBSZW1vdmVkIG9ic29sZXRlIGNvbW1lbnRzIGFib3V0IFJNUycgcGFja2FnZSBzeXN0ZW0uCgoyMDAyLTAzLTE0ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUBnbnUub3JnPgoKCWx0bWFpbi5pbjogVG91Y2gtdXAgdG8gbWFrZSB0ZXN0c3VpdGUgcGFzcywgYW5kIGRlZmF1bHQgdGFnbmFtZQoJdG8gQ0Mgd2hlbiBpdCBpc24ndCBleHBsaWNpdGx5IHNldC4KCjIwMDItMDMtMTQgIEFudGhvbnkgR3JlZW4gIDxncmVlbkByZWRoYXQuY29tPgoKCSogbGlidG9vbC5tNCAoQUNfTElCVE9PTF9QUk9HX0NDX0NfTyk6IEFsYmVydCBDaGluJ3MgZ2NqIGZpeC4KCShBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKTogUGVyIEJvdGhuZXIncyBjaGFuZ2UgZm9yIG5vdAoJdXNpbmcgLURQSUMgd2l0aCBnY2ouCgoyMDAyLTAzLTExICBCcnVjZSBLb3JiICA8YmtvcmJAZ251Lm9yZz4KCgkqIGx0bWFpbi5pbihjb21waWxlKTogYnJpbmcgYSB0b3VjaCBvZiBvcmRlciB0byB0aGUgb3B0aW9uIHByb2Nlc3NpbmcKCjIwMDItMDItMDkgIEdhcnkgVi4gVmF1Z2hhbiAgPGdhcnlAZ251Lm9yZz4KCgkqIE5FV1M6IFVwZGF0ZWQuCgkqIFRIQU5LUzogQWRkZWQgUm9iIENvbGxpbnMgYW5kIENodWNrIFdpbHNvbiBmb3IgdGhlaXIgY3lnd2luCgl3b3JrLgoKCUZyb20gUm9iZXJ0IENvbGxpbnMgIDxyb2JlcnQuY29sbGluc0BpdGRvbWFpbi5jb20uYXU+OgoJKiBjb25maWd1cmUuYWMgKEFDX0VYRUVYVCk6IE5lZWRlZCBmb3IgRE9TaXNoIHN5c3RlbXMuCgkqIGxpYnRvb2wubTQgKHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCkgW2N5Z3dpbl06IFNldCB0byB5ZXMKCXdoZW4gY29tcGlsaW5nIHdpdGggZ2NjLgoJKGx0X3Byb2dfY29tcGlsZXJfcGljKSBbY3lnd2luXTogTm8gbG9uZ2VyIG5lZWRzIHRoZSAtRERMTF9FWFBPUlQKCWhhY2ssIHNvIHdlIGp1c3Qgc2F5IHRoZSBwaWMgaXMgdGhlIGRlZmF1bHQuCgkoQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUykgW2N5Z3dpbl06IEV4dHJhY3Qgc3ltYm9scyBmcm9tIGEKCWxpYnJhcnkgbm9ybWFsbHkuCglbY3lnd2luXTogRGVjbGFyZSBDKysgY29tcGlsZXIgY2hhcmFjdGVyaXNpY3MgZm9yIGcrKywgdGFraW5nIGludG8KCWFjY291bnQgdGhlIG5ldyBhdXRvLWltcG9ydCBzdXBwb3J0IGluIGN5Z3dpbiBsZC4KCSogbHRtYWluLmluIChzcGVjaWFsZGVwbGlicykgW2N5Z3dpbl06IEJlIGNhcmVmdWwgYWJvdXQKCWVsaW1pbmF0aW5nIGR1cGxpY2F0ZSAtbGdjYydzIGZyb20gdGhlIGxpbmsgbGluZS4KCVtjeWd3aW5dOiBCZSBzbWFydGVyIGFib3V0IC5leGUgc3VmZml4ZXMuCgkqIGRlbW8vY29uZmlndXJlLmFjIChBQ19FWEVFWFQsIEFDX0xJQlRPT0xfV0lOMzJfRExMKTogIFN1cHBvcnQKCURPU2lzaCBzeXN0ZW1zIHByb3Blcmx5LgoJKiBkZXBkZW1vL2NvbmZpZ3VyZS5hYyAoQUNfRVhFRVhULCBBQ19MSUJUT09MX1dJTjMyX0RMTCk6ICBEaXR0by4KCSogZGVtby9NYWtlZmlsZS5hbSAoZGVwbGlicy1jaGVjayk6IEFsbG93IGZvciAuZXhlIHN1ZmZpeC4gIFVzZQoJaGVsbF9zdGF0aWMgaW5zdGVhZCBvZiBoZWxsLnN0YXRpYyBmb3IgbXVsdGktYC4nIGluaGliaXRlZCBPU2VzLgoJKiB0ZXN0cy9kZW1vLWV4ZWMudGVzdDogRGl0dG8uCgkqIHRlc3RzL2RlbW8taW5zdC50ZXN0OiBEaXR0by4KCSogZGVtby9mb28uaCBbY3lnd2luXTogU2FuaXRpemUgY3lnd2luIGRsbCBzdXBwb3J0LgoJKiBkZW1vL2Zvby5jIChfTElCRk9PX0NPTVBJTEFUSU9OXyk6IE5vIGxvbmdlciByZXF1aXJlZC4KCSogZGVtby9oZWxsby5jIChfTElCRk9PX0NPTVBJTEFUSU9OXyk6IERpdHRvLgoJKiBkZXBkZW1vL01ha2VmaWxlLmFtIChiaW5fUFJPR1JBTVMpOiBVc2UgZGVwZGVtb19zdGF0aWMgaW5zdGVhZAoJb2YgZGVwZGVtby5zdGF0aWMgZm9yIG11bHRpLWAuJyBpbmhpYml0ZWQgT1Nlcy4KCSogdGVzdHMvZGVwZGVtby1leGVjLnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9kZXBkZW1vLWluc3QudGVzdDogRGl0dG8uCgkqIG1kZW1vL01ha2VmaWxlLmFtIChiaW5fUFJPR1JBTVMpOiAgRGl0dG8gZm9yIG1kZW1vLnN0YXRpYy4KCSogdGVzdHMvZHJ5cnVuLnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9tZGVtby1leGVjLnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9tZGVtby1pbnN0LnRlc3Q6IERpdHRvLgoJKiB0ZXN0cy9idWlsZC1yZWxpbmsudGVzdDogIEJlIGNhcmVmdWwgYWJvdXQgcG9zc2libGUgLmV4ZQoJc3VmZml4ZXMuCgkqIHRlc3RzL25vaW5zdC1saW5rLnRlc3Q6IEFsbG93IGZvciAuZXhlIHN1ZmZpeC4KCjIwMDItMDItMDcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCVJldmVydGVkIGluY29ycmVjdCBwYXRjaDoKCTIwMDEtMTAtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogbHRtYWluLnNoOiBBbGxvdyBsaW5rIGFnYWluc3QgYW4gYXJjaGl2ZSB3aGVuIGJ1aWxkaW5nIGEKCXNoYXJlZCBsaWJyYXJ5LgoJKiBsaWJ0b29sLm00IChsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCk6IEFsd2F5cyB1c2UKCWZpbGVfbWFnaWMgZm9yIExpbnV4IEVMRi4KCjIwMDItMDEtMzAgIFJvYmVydCBCb2VobmUgIDxyYm9laG5lQHJpY2FyZG8tdXMuY29tPgoKCSogbGlidG9vbC5tNCAoTFRfQUNfUFJPR19TRUQpOiBSZW1vdmVkIGEgbXlzdGVyaW91cyBuZXdsaW5lLgoKMjAwMi0wMS0yOCAgUm9iZXJ0IEJvZWhuZSAgPHJib2VobmVAcmljYXJkby11cy5jb20+CgoJKiBsaWJ0b29sLm00IChMVF9BQ19QUk9HX1NFRCk6IE5ldyBtYWNybyB0ZXN0cyBzZWQgZm9yIHRydW5jYXRpb24gb2YKCW91dHB1dC4gIEFDX1JFUVVJUkUgdGhlIG5ldyBtYWNyby4KCSogbHRtYWluLmluOiBVc2UgJFNFRCByYXRoZXIgdGhhbiBwbGFuIG9sZCBzZWQsIGFzIHNldCBieSB0aGUgbmV3CgltYWNybyBMVF9BQ19QUk9HX1NFRC4KCjIwMDItMDEtMTAgIFZvbGtlciBDaHJpc3RpYW4gIDx2b2NAc29mdC51bmktbGluei5hYy5hdD4KCgkqIGxpYmx0ZGwvbHRkbC5jIChmaW5kX2hhbmRsZV9jYWxsYmFjayk6IHRyZWF0IHRoZSByZXN1bHQgb2YgYSBjYWxsCgl0byBhY2Nlc3MoMikgY29ycmVjdGx5IHdoZW4gZGVjaWRpbmcgd2hldGhlciBhIGxpYnJhcnkgY2FuIGJlIGZvdW5kCglpbiBhIGRpcmVjdG9yeSBmcm9tIHVzZXJfc2VhcmNoX3BhdGguCgoyMDAyLTAxLTA3ICBSb2JlcnQgQm9laG5lICA8cmJvZWhuZUByaWNhcmRvLXVzLmNvbT4KCgkqIE5FV1M6IEZpeGVkIHdyb25nIHBhdGggZm9yIHRleGluZm8udGV4LgoJKiBjb25maWd1cmUuYWM6IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNGUuCgoJR05VIGxpYnRvb2wgMS40ZCB3YXMgcmVsZWFzZWQuCgoJKiBjb25maWd1cmUuYWM6IEJ1bXBlZCB2ZXJzaW9uIHRvIDEuNGQuCgkqIE5FV1M6IHVwZGF0ZWQuCgkqIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiwgdGV4aW5mby50ZXg6ICBTeW5jaHJvbmlzZWQgZnJvbQoJZnRwLmdudS5vcmcuCgpDb250aW51ZWQgaW4gQ2hhbmdlTG9nLjIwMDEK